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),从那里运行程序,你会得到带有详细信息的回溯,然后在这个问题中添加回溯
文件路径是一样的,@asongtoruin 同样的事情,是的,这是一个更大的解析脚本的方法部分。但是,我已将这种方法从较大的脚本中取出,并且脚本的其余部分运行良好。我尝试使用 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最新下载地址+软件激活码+长期有效)