簡體   English   中英

使用 Numpy 為 Python 創建 cx_Freeze exe

[英]Creating cx_Freeze exe with Numpy for Python

我正在嘗試使用 cx_Freeze 創建一個基本的 exe。 它適用於沒有 numpy 的 .py 程序,但我無法使用 numpy 正確制作一個程序。

*有想法該怎么解決這個嗎? 我需要在我的 setup.py 中包含什么嗎?

當我 go 運行 exe 時,它說:

           c:\Python32\Scripts\dist>Assignment4_5.exe
           Traceback (most recent call last):
     File "C:\Python32\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 2
     7, in <module>
     exec(code, m.__dict__)
     File "c:\Python32\Assignment4_5.py", line 6, in <module>
     import numpy as np
     File "C:\Python32\lib\site-packages\numpy\__init__.py", line 137, in <module>
     from . import add_newdocs
     File "C:\Python32\lib\site-packages\numpy\add_newdocs.py", line 9, in <module>

     from numpy.lib import add_newdoc
     File "C:\Python32\lib\site-packages\numpy\lib\__init__.py", line 17, in <modul
     e>
    from .npyio import *
    File "C:\Python32\lib\site-packages\numpy\lib\npyio.py", line 6, in <module>
    from . import format
    ImportError: cannot import name format

   c:\Python32\Scripts\dist>

安裝.py:

   from cx_Freeze import setup, Executable

   includeDependencies = []

   setup(
        name = "Assignment4_5PythonExe",
        version = "0.1",
        description = "Sort Methods",
        executables = [Executable("Assignment4_5.py")]
        )

這是 cx_Freeze 中的一個錯誤 - 它不會自動檢測到它應該復制模塊numpy.lib.format 它已經在開發版本中得到修復,所以如果你在 position 嘗試一下,它應該可以工作。

否則,您需要指定numpy.lib.format需要包含在您的setup.py中。 該行看起來像這樣:

options = {"build_exe": {"packages": ["numpy.lib.format"]}},

另請參閱文檔

Numpy 似乎對 cx_Freeze 有點混亂,因此您需要明確聲明它。 正如文檔中所引用的

這是您的解決方案:

   from cx_Freeze import setup, Executable

   build_exe_options = {"packages": ["numpy"]}

   setup(
        name = "Assignment4_5PythonExe",
        version = "0.1",
        description = "Sort Methods",
        options = {"build_exe": build_exe_options},
        executables = [Executable("Assignment4_5.py")]
        )

我最近在使用 cx_freeze 6.1 和 Python 3.5.4 時遇到了這個問題。 為了解決我的運行時問題,我不得不在運行時將 numpy 庫路徑添加到系統路徑。 這是相關的代碼片段,如果它可以幫助任何人:

if __name__ == '__main__':
# The frozen app needs the numpy path added to it's file.
try:
    this_file = __file__
except NameError:
    this_file = sys.argv[0]
    sys.path.insert(0, str(Path(this_file).absolute().parent / "lib" / "numpy"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM