Hi, this works perfectly. Thank you very much! realpath is a great
little function, I may have to start using it in my own software.

On 20 November 2016 at 02:47, Anthony Tuininga
<anthony.tuini...@gmail.com> wrote:
> Hi Richie,
>
> Thanks for providing the test case. That made things very clear. I adjusted
> the source to determine the absolute path of the executable during startup.
> The manual page made it clear that the other code I had for following links
> is no longer needed since realpath() does that automatically. Your test case
> now passes. Can you confirm for me? Thanks.
>
> Anthony
>
> On Fri, Nov 18, 2016 at 10:50 AM, Richie Ward <rich...@gmail.com> wrote:
>>
>> Thanks, an absolute path seems to cure it. I don't know if there's any
>> other fixes or workarounds.
>>
>> I have attached a test case, it works fine during normal python
>> execution but when cx_freezed and not ran with a absolute path, it
>> crashes.
>>
>> Another hack is to copy ./lib to the directory that I used os.chdir on.
>>
>> To use the test case:
>> 1) Make a directory called future_import in your home directory
>> 2) Put future_import.py in there.
>> 3) Edit run_crash.py so that the path to the directory matches.
>> 4) Just run usual python3 freeze_setup.py build
>> 5) Run with ./run_crash
>>
>> Normal output:
>> r@r-H61N-USB3:~/Code/cx_freeze_bug$ ./run_crash.py
>> This will attempt to glitch cx_freeze...
>> /home/r/future_import
>> <module 'future_import' from '/home/r/future_import/future_import.py'>
>> Loaded __future__
>> _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 16384)
>> Program ran ok.
>> r@r-H61N-USB3:~/Code/cx_freeze_bug$
>>
>> Bug output:
>> r@r-H61N-USB3:~/Code/cx_freeze/build/exe.linux-x86_64-3.5$ ./run_crash
>> This will attempt to glitch cx_freeze...
>> /home/r/future_import
>> Traceback (most recent call last):
>>  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
>>  File "<frozen importlib._bootstrap>", line 958, in
>> _find_and_load_unlocked
>>  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
>>  File "<frozen importlib._bootstrap>", line 634, in
>> _load_backward_compatible
>>  File
>> "/usr/local/lib/python3.5/dist-packages/cx_Freeze/initscripts/__startup__.py",
>> line 12, in <module>
>>    __import__(name + "__init__")
>>  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
>>  File "<frozen importlib._bootstrap>", line 958, in
>> _find_and_load_unlocked
>>  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
>>  File "<frozen importlib._bootstrap>", line 634, in
>> _load_backward_compatible
>>  File
>> "/usr/local/lib/python3.5/dist-packages/cx_Freeze/initscripts/Console.py",
>> line 21, in <module>
>>    scriptModule = __import__(moduleName)
>>  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
>>  File "<frozen importlib._bootstrap>", line 958, in
>> _find_and_load_unlocked
>>  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
>>  File "<frozen importlib._bootstrap>", line 634, in
>> _load_backward_compatible
>>  File "run_crash.py", line 17, in <module>
>>  File "run_crash.py", line 12, in main
>>  File "/home/r/future_import/future_import.py", line 1, in <module>
>>    from __future__ import absolute_import
>>  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
>>  File "<frozen importlib._bootstrap>", line 954, in
>> _find_and_load_unlocked
>>  File "<frozen importlib._bootstrap>", line 896, in _find_spec
>>  File "<frozen importlib._bootstrap_external>", line 1147, in find_spec
>>  File "<frozen importlib._bootstrap_external>", line 1123, in _get_spec
>>  File "<frozen importlib._bootstrap_external>", line 1104, in
>> _legacy_get_spec
>>  File "<frozen importlib._bootstrap>", line 444, in spec_from_loader
>>  File "<frozen importlib._bootstrap_external>", line 541, in
>> spec_from_file_location
>> FileNotFoundError: [Errno 2] No such file or directory:
>> './lib/python35.zip'
>> r@r-H61N-USB3:~/Code/cx_freeze/build/exe.linux-x86_64-3.5$
>>
>> On 18 November 2016 at 15:13, Anthony Tuininga
>> <anthony.tuini...@gmail.com> wrote:
>> > Can you provide a test case that demonstrates this? I can take a look,
>> > then.
>> > In theory this is happening fairly early in the execution of your
>> > program so
>> > it should be reasonably easy to replicate.
>> >
>> > Just out of curiosity, what happens if you use an absolute path when
>> > running
>> > your application?
>> >
>> > Anthony
>> >
>> > On Fri, Nov 18, 2016 at 5:43 AM, Richie Ward <rich...@gmail.com> wrote:
>> >>
>> >> I need to tell cx_freeze the full path of ./lib/python35.zip as my app
>> >> requires changing the current directory. I am using os.chdir to change
>> >> directory.
>> >>
>> >> Due to the design of my program, I cannot change it back in time to
>> >> prevent the traceback as it runs foreign code. I tried adding the lib
>> >> folder to sys.path but cx_freeze still doesn't find its required
>> >> python35.zip file.
>> >>
>> >> I get the following traceback on my program:
>> >> r@r-H61N-USB3:~/Code/hypernucleus/hn$ ./run_hypernucleus -r
>> >> kitten_command
>> >> /home/r/Code/hypernucleus/hn/lib/python35.zip
>> >> Traceback (most recent call last):
>> >>  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
>> >>  File "<frozen importlib._bootstrap>", line 958, in
>> >> _find_and_load_unlocked
>> >>  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
>> >>  File "<frozen importlib._bootstrap>", line 634, in
>> >> _load_backward_compatible
>> >>  File
>> >>
>> >> "/usr/local/lib/python3.5/dist-packages/cx_Freeze-5.0-py3.5-linux-x86_64.egg/cx_Freeze/initscripts/__startup__.py",
>> >> line 12, in <module>
>> >>    __import__(name + "__init__")
>> >>  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
>> >>  File "<frozen importlib._bootstrap>", line 958, in
>> >> _find_and_load_unlocked
>> >>  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
>> >>  File "<frozen importlib._bootstrap>", line 634, in
>> >> _load_backward_compatible
>> >>  File
>> >>
>> >> "/usr/local/lib/python3.5/dist-packages/cx_Freeze-5.0-py3.5-linux-x86_64.egg/cx_Freeze/initscripts/Console.py",
>> >> line 21, in <module>
>> >>    scriptModule = __import__(moduleName)
>> >>  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
>> >>  File "<frozen importlib._bootstrap>", line 958, in
>> >> _find_and_load_unlocked
>> >>  File "<frozen importlib._bootstrap>", line 664, in _load_unlocked
>> >>  File "<frozen importlib._bootstrap>", line 634, in
>> >> _load_backward_compatible
>> >>  File "run_hypernucleus.py", line 3, in <module>
>> >>  File "/home/r/Code/hypernucleus/hypernucleus/__init__.py", line 45, in
>> >> main
>> >>    game_mgr.execute_game(args.run_game)
>> >>  File "/home/r/Code/hypernucleus/hypernucleus/library/game_manager.py",
>> >> line 62, in execute_game
>> >>    game = __import__(game_name)
>> >>  File
>> >> "/home/r/.config/hypernucleus/games/kitten_command/kitten_command.py",
>> >> line 19, in <module>
>> >>    from __future__ import division
>> >>  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
>> >>  File "<frozen importlib._bootstrap>", line 954, in
>> >> _find_and_load_unlocked
>> >>  File "<frozen importlib._bootstrap>", line 896, in _find_spec
>> >>  File "<frozen importlib._bootstrap_external>", line 1147, in find_spec
>> >>  File "<frozen importlib._bootstrap_external>", line 1123, in _get_spec
>> >>  File "<frozen importlib._bootstrap_external>", line 1104, in
>> >> _legacy_get_spec
>> >>  File "<frozen importlib._bootstrap>", line 444, in spec_from_loader
>> >>  File "<frozen importlib._bootstrap_external>", line 541, in
>> >> spec_from_file_location
>> >> FileNotFoundError: [Errno 2] No such file or directory:
>> >> './lib/python35.zip'
>> >>
>> >> Any idea on how to fix this? I need to force it to use a absolute path
>> >> or make it look in sys.path for it (or something similar). I am using
>> >> cx_freeze 5.0 and Ubuntu Linux.
>> >>
>> >> --
>> >> Thanks, Richie Ward
>> >> https://uk.linkedin.com/in/richie-ward-07ab0495
>> >>
>> >>
>> >>
>> >> ------------------------------------------------------------------------------
>> >> _______________________________________________
>> >> cx-freeze-users mailing list
>> >> cx-freeze-users@lists.sourceforge.net
>> >> https://lists.sourceforge.net/lists/listinfo/cx-freeze-users
>> >
>> >
>> >
>> >
>> > ------------------------------------------------------------------------------
>> >
>> > _______________________________________________
>> > cx-freeze-users mailing list
>> > cx-freeze-users@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/cx-freeze-users
>> >
>>
>>
>>
>> --
>> Thanks, Richie Ward
>> https://uk.linkedin.com/in/richie-ward-07ab0495
>>
>>
>> ------------------------------------------------------------------------------
>>
>> _______________________________________________
>> cx-freeze-users mailing list
>> cx-freeze-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/cx-freeze-users
>>
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> cx-freeze-users mailing list
> cx-freeze-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/cx-freeze-users
>



-- 
Thanks, Richie Ward
https://uk.linkedin.com/in/richie-ward-07ab0495

------------------------------------------------------------------------------
_______________________________________________
cx-freeze-users mailing list
cx-freeze-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cx-freeze-users

Reply via email to