python导入pandas出错_python - 使用cx_Freeze从Python3.6脚本导入pandas构建可执行文件时出错 - 堆栈内存溢出...

我正在尝试使用cx_Freeze创建一个Python 3.6可执行文件,其中包括pandas和numpy。 我正在使用Python 3.6.5和使用virtualenvwrapper创建的虚拟环境。 我正在Windows 10上开发.cx_Freeze版本是5.1。 熊猫版本是0.23.4。

我的setup.py看起来像这样:

import os

from cx_Freeze import setup, Executable

PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))

os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')

os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')

executables = [Executable("main.py", base=base)]

packages = ["idna", "os", "numpy","importlib", "pandas"]

options = {

'build_exe': {

'packages':packages,

'include_files':[

os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),

os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),

os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'sqlite3.dll'),

],

},

}

setup(

name = "MyScript",

options = options,

version = "0.1",

description = 'Placeholder desc',

executables = executables

)

请注意,我手动设置env变量,因为在构建过程中没有找到它们,我不得不手动将DLL移动到virtualenv文件夹。

脚本看起来像这样:

import numpy as np

import pandas as pd

import tkinter as tk

root = tk.Tk()

root.mainloop()

如果我将import pandas as pd注释import pandas as pd ,一切正常。 如果我添加pandas导入,我会收到以下错误:

C:\path\to\project\build\exe.win-amd64-3.6>MyScript.exe

Traceback (most recent call last):

File "C:\path\to\Envs\MyEnv\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run

module.run()

File "C:\path\to\Envs\MyEnv\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run

exec(code, m.__dict__)

File "MyScript.py", line 2, in

File "C:\path\to\Envs\MyEnv\lib\site-packages\pandas\__init__.py", line 23, in

from pandas.compat.numpy import *

File "C:\path\to\Envs\MyEnv\lib\site-packages\pandas\compat\__init__.py", line 32, in

from distutils.version import LooseVersion

File "C:\path\to\Envs\MyEnv\lib\distutils\__init__.py", line 17, in

real_distutils = imp.load_module("_virtualenv_distutils", None, distutils_path, ('', '', imp.PKG_DIRECTORY))

File "C:\path\to\Envs\MyEnv\lib\imp.py", line 245, in load_module

return load_package(name, filename)

File "C:\path\to\Envs\MyEnv\lib\imp.py", line 217, in load_package

return _load(spec)

File "", line 683, in _load

AttributeError: 'NoneType' object has no attribute 'name'

我已经在网上看到了很多论坛和堆栈溢出问题(实际上我必须修复很多错误才能到达这里)但是我无法解决cx_Freeze缺失的问题。

我已经卸载并重新安装了pandas,我卸载了cx_Freeze并尝试安装以前的版本(安装失败,但这是一个不同的SO问题)。 我实际上尝试过pyinstaller和py2exe但是有太多的错误(更难以修复)我放弃了除了cx_Freeze之外的任何东西来创建可执行文件。

有人可以帮忙吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值