Python 脚本在 IDE 中有效,但在内置可执行文件时无效?

Posted

技术标签:

【中文标题】Python 脚本在 IDE 中有效,但在内置可执行文件时无效?【英文标题】:Python script works in the IDE but not when built into executable? 【发布时间】:2017-02-13 16:17:41 【问题描述】:

当我在 Pycharm 中运行我的代码时,它会解析我的 Excel 文件并在 IDE 中正确合并所有内容。但是我使用cx_Freeze 将它构建为可执行文件,它停止工作。当我双击可执行文件时,它什么也没有。黑色的控制台窗口快速闪烁。是什么赋予了。 Pycharm 中没有堆栈跟踪或错误。

这是我的参考代码:

[In:]

import numpy as np
import pandas as pd

 #finds the path to a users pc.
userHome = os.path.expanduser('~')
directory = userHome + '/Desktop/Parsing Script/ParsingScriptOutputFile/'
workerList= (directory+'employeeList.csv')
managerList = (userHome+'/Parsing Script/ParsingScriptOutputFile/managerList.XLSX')

 # specify 32 columns, no headers
employee = pd.read_csv(workerList, usecols=range(32), header=None,  sep=",",engine='python') # read in the data
original_rows = employee.shape[0] # original number of rows
managers = pd.read_excel(managerList)
managers= managers[['Cost Center','Profit Center','User ID', 'Description','Email address','Person Responsible']]

# Left join so that the rows that do not match are not dropped from employee
# data
merged_df = pd.merge(employee, managers, on='key', how='left')

# Number of rows should be unchanged
# This should print out True
print(merged_df.shape[0] == original_rows)
#File called merged_data.csv returned to ParsingScriptOutputFile
return merged_df.to_csv(directory+'merged_data.csv', index=False, encoding='utf-8') # Save    

@ sideffect0(感谢您的建议) 全回溯

Traceback (most recent call last):
  File "C:\Python\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 12, in <module>

    __import__(name + "__init__")
  File "C:\Python\lib\site-packages\cx_Freeze\initscripts\Console.py", line      24, in <module>
    exec(code, m.__dict__)
  File "csvProject1.py", line 3, in <module>
  File "C:\Python\lib\site-packages\numpy\__init__.py", line 142, in <module>
from . import add_newdocs
  File "C:\Python\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "C:\Python\lib\site-packages\numpy\lib\__init__.py", line 8, in <module>
from .type_check import *
  File "C:\Python\lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
     File "C:\Python\lib\site-packages\numpy\core\__init__.py", line 36, in <module>
    from . import numeric
   File "C:\Python\lib\site-packages\numpy\core\numeric.py", line 1842, in <module>
    from .arrayprint import array2string, get_printoptions, set_printoptions
  File "C:\Python\lib\site-packages\numpy\core\arrayprint.py", line 24, in <module>
from .fromnumeric import ravel
  File "C:\Python\lib\site-packages\numpy\core\fromnumeric.py", line 15, in <module>
    from . import _methods
ImportError: cannot import name '_methods'

【问题讨论】:

文件路径是否相同?问是因为您可能在另一台机器上尝试exe 如果你从命令行运行exe会发生什么? 我想你是在windows中,打开命令提示符(Win + R -> cmd),从那里运行程序,你会得到带有详细信息的回溯,然后在这个问题中添加回溯 文件路径是一样的,@ason​​gtoruin 同样的事情,是的,这是一个更大的解析脚本的方法部分。但是,我已将这种方法从较大的脚本中取出,并且脚本的其余部分运行良好。我尝试使用 cx_Freeze 仅构建此代码,但它不起作用。它仍然可以在 pycharm 中使用。 @sideeffect0 感谢您的提示。 【参考方案1】:

问题是模块未正确安装在 setup.py 文件中,我使用了 @downshift 链接我的这个 *** 答案中的 this code。我还发现我的 numpy 安装已损坏。所以我做了一个快速卸载并重新安装。将脚本重新构建为可执行文件,并且运行良好。

为了获得完整的回溯,我在命令行中导航到可执行文件并输入文件名。更快的方法是按住alt并右键单击包含您的exe的文件,然后单击打开open command window这将为您打开文件位置的cmd。在那里运行您的程序以获取回溯

【讨论】:

以上是关于Python 脚本在 IDE 中有效,但在内置可执行文件时无效?的主要内容,如果未能解决你的问题,请参考以下文章

Bash命令在终端中有效,但在python脚本中的“子进程”中无效[重复]

JDBC 连接在 IDE (eclipse) 中有效,但在 .jar 文件中无效

为啥以下代码在在线 ide(gcc 7.2.0) 上有效,但在 ubuntu 上出错?

最适合初学者的8个python开发环境(内附python IDE最新下载地址+软件激活码+长期有效)

最适合初学者的8个python开发环境(内附python IDE最新下载地址+软件激活码+长期有效)

最适合初学者的8个python开发环境(内附python IDE最新下载地址+软件激活码+长期有效)