As you mentioned, filenames are case insensitive on Windows, so Logging and
logging are the same thing. But if that module is inside a package (i.e.
you're doing import testcx.Logging instead of just import Logging), then it
shouldn't be directly on sys.path, so it shouldn't be found as the Logging
module.

My guess would be that because you're freezing testcx/app.py, it treats
that as a script, so it adds its containing directory (testcx/) to
sys.path, and that means that it sees Logging.py as a directly importable
module.

Thomas

On 29 March 2015 at 01:39, Stefan Champailler <schampail...@skynet.be>
wrote:

>
>
> Hello,
>
> Today I came across something that looks like a (small) bug.
>
> In my project I have a file called "Logging.py" (capital L), in the root
> of the project.
> This project imports reportlab (the reporting library).
>
> In python 3.4, it doesn't work once frozen. It gives a stacktrace during
> the imports.
> In that stacktrace, in the chain of imports, I see that reportlab
> imports the logging module (the one from Python I guess). But strangely,
> right after in the stack trace, I see that cx_freeze is in my Logging
> module. So I'm wondering if there's a problem when matching names
> of module (naming my logging module "Logging" is, of course, a bit
> dangerous,
> but that decision was taken a long time ago, when I was still learning
> Python :-) )
>
> When I change the name of my "Logging.py" module to something different,
> like
> "aaa.py", then it works fine.
>
>
> I've reproduced this bug with two files.
> I put both these files in a directory called "testcx", plus an additional
> __init__.py
> Here there are :
>
>
> ------------------- app.py
>
> # The report lab stuff is there to trigger the imports
> # it can probably reduced to a few well chosen imports
>
> from reportlab import platypus
> from reportlab.lib.pagesizes import A4
> from reportlab.lib import colors
> from reportlab.lib.units import inch,cm
> from reportlab.platypus import Paragraph,BaseDocTemplate
> from reportlab.graphics.barcode import createBarcodeDrawing
> from reportlab.lib.enums import TA_CENTER,TA_RIGHT
> from reportlab.pdfgen import canvas
> from reportlab.lib.styles import ParagraphStyle
>
> import testcx.Logging
>
> s = ParagraphStyle(name = "zou", fontName = 'Helvetica')
>
> print("app")
>
>
>
> ------------------- Logging.py
>
> print("Logging module")
>
>
> Then I do :
>
> set PYTHONPATH=... the path that *contains* the testcx directory
>
> I freeze the app :
>
> python \PORT-STCA2\opt\python3\Scripts\cxfreeze testcx\app.py
>
> When I run :
>
> dist\app.exe
>
> I get :
>
> C:\PORT-STCA2\pl-PRIVATE\horse>dist\app.exe
> Logging module
> Traceback (most recent call last):
>   File
> "C:\PORT-STCA2\opt\python3\lib\site-packages\cx_Freeze\initscripts\Console.py",
> line 27, in <module>
>     exec(code, m.__dict__)
>   File "testcx\app.py", line 1, in <module>
>     from reportlab import platypus
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2284, in
> _handle_fromlist
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 321, in
> _call_with_frames_removed
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in
> _find_and_load
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2226, in
> _find_and_load_unlocked
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1191, in
> _load_unlocked
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1161, in
> _load_backward_compatible
>   File
> "C:\PORT-STCA2\opt\python3\lib\site-packages\reportlab\platypus\__init__.py",
> line 12, in <module>
>     from reportlab.platypus.tables import Table, TableStyle, CellStyle,
> LongTable
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in
> _find_and_load
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2226, in
> _find_and_load_unlocked
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1191, in
> _load_unlocked
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1161, in
> _load_backward_compatible
>   File
> "C:\PORT-STCA2\opt\python3\lib\site-packages\reportlab\platypus\tables.py",
> line 28, in <module>
>     from reportlab.platypus.doctemplate import Indenter
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in
> _find_and_load
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2226, in
> _find_and_load_unlocked
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1191, in
> _load_unlocked
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1161, in
> _load_backward_compatible
>   File
> "C:\PORT-STCA2\opt\python3\lib\site-packages\reportlab\platypus\doctemplate.py",
> line 34, in <module>
>     from reportlab.platypus.frames import Frame
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in
> _find_and_load
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2226, in
> _find_and_load_unlocked
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1191, in
> _load_unlocked
>   File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1161, in
> _load_backward_compatible
>   File
> "C:\PORT-STCA2\opt\python3\lib\site-packages\reportlab\platypus\frames.py",
> line 11, in <module>
>     logger = logging.getLogger('reportlab.platypus')
> AttributeError: 'module' object has no attribute 'getLogger'
>
> The script works perfectly fine when run through Python interpreter...
>
> I use python 3.4.2 and cx_freeze 4.3.4 on Windows 7.
>
> Maybe this is a problem because of Windows is case insensitive on file
> names ? But then,
> why is cx_freeze's behaviour different ?
>
> Right now this is not much of a problem for me, I've just renamed my
> python logging module
> to a saner name. I've also checked cxFreeze code a bit and didn't see
> anything obvious.
>
> stF
>
> --
> Timeo Danaos et dona ferentes
> Twitter : @Arakowa1
>
>
> ------------------------------------------------------------------------------
> Dive into the World of Parallel Programming The Go Parallel Website,
> sponsored
> by Intel and developed in partnership with Slashdot Media, is your hub for
> all
> things parallel software development, from weekly thought leadership blogs
> to
> news, videos, case studies, tutorials and more. Take a look and join the
> conversation now. http://goparallel.sourceforge.net/
> _______________________________________________
> cx-freeze-users mailing list
> cx-freeze-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/cx-freeze-users
>
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
cx-freeze-users mailing list
cx-freeze-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cx-freeze-users

Reply via email to