Python - cxfreeze keeps saying file/directory non-existant

喜你入骨 提交于 2020-01-16 06:12:48

问题


I've got some very basic code which works, and I want to turn it into an exe.

Since I'm using Python 3 because it seems so much cleaner than other Python editions, I've not been able to use Py2Exe, so I installed cxfreeze instead.

Once I run cxfreeze with the following command:

cxfreeze "C:\Users\pc user\Documents\Python\First project\Main.py"

It says something about the directory/file not existing. That's about as in-depth as it goes. The exact error is something like "Could not find the path specified"

cxfreeze itself is 'detected' by cmd because I don't get a non-recognised error when I just run "cxfreeze". Both cxfreeze and python are on my PATH environment variable.

Naturally I've triple-checked the directory and it is correct.

I've tried variations of this command, including

python cxfreeze "C:\Users\pc user\Documents\Python\First project\Main.py"
cxfreeze C:\Users\pc user\Documents\Python\First project\Main.py
python cxfreeze C:\Users\pc user\Documents\Python\First project\Main.py

Can anyone bring light to this situation?


回答1:


  • Get cxfreeze binary. I got mine from here. The file is cx_Freeze-4.2.3.win-amd64-py3.2.‌exe (my PC is win7 64-bit with 64b Python).
  • Install it on Python 3.2. A file cxfreeze.bat is created in C:\Python32\Scripts.
  • Open the .bat file. Change the contents:

    @echo off
    X:\Python32\python.exe X:\Python32\Scripts\cxfreeze %*

    with

    @echo off
    C:\Python32\python.exe C:\Python32\Scripts\cxfreeze %*

    or equivalent for your particular path

  • Open your cmd console and change your directory to C:\Python32\Scripts (I have Python 2.6 as default so that Python32/Scripts is not in the path. Whatever your case this is the safer method)
  • Execute the cxfreeze.bat file as shown:

,

Microsoft Windows [Versión 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\>cd c:\Python32\Scripts

c:\Python32\Scripts>cxfreeze.bat "C:\Users\pc user\Documents\First project\Main.py"
copying C:\Python32\lib\site-packages\cx_Freeze\bases\Console.exe -> c:\Python32\Scripts\d
ist\Main.exe
copying C:\Windows\system32\python32.dll -> c:\Python32\Scripts\dist\python32.dll
...............................................
................................................. 
m zipimport
m zlib

copying C:\Python32\DLLs\bz2.pyd -> c:\Python32\Scripts\dist\bz2.pyd
copying C:\Python32\DLLs\unicodedata.pyd -> c:\Python32\Scripts\dist\unicodedata.pyd

c:\Python32\Scripts>
  • A dist folder is created in C:\Python32\Scripts\ that includes your Main.exe file



回答2:


I had a similar issue with cxfreeze on the following setup:

  • Win7 64-bit OS
  • 64-bit python 2.7.3 (from python.org)
  • cxfreeze 4.3 for Win 64-bit + Python 2.7 (from http://cx-freeze.sourceforge.net/)

After some investigation it turns out that all of the scripts that were installed by the cxfreeze package into my 'c:\python27\Scripts' directory (cxfreeze, cxfreeze.bat, cxfreeze-quickstart, cxfreeze-quickstart.bat) had bad references to my python base path.

Inside those scripts there were references to a base path of 'c:\python\32-bit\2.7' and 'c:\python\64-bit\2.7'. I edited the scripts and fixed the paths(changed the base path to 'c:\python27'), and that fixed the problems. Check the python base install path on your system.

Not sure why these paths were wrong. I installed Python from the official python.org site (as alluded to by cxfreeze docs) and I did not modify the install location.



来源:https://stackoverflow.com/questions/8774063/python-cxfreeze-keeps-saying-file-directory-non-existant

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!