如何运行内置的Pycharm项目pyinstaller当包括VENV目录的依赖?

问题描述 投票:3回答:2

我是新来的Python和PyCharm。我在OSX海伊谢拉运行。

我创建了一个PyCharm项目使用LXML。我已经安装了LXML 4.1.1为项目依赖关系,我可以看到它的下myProject的/ VENV / lib目录/站点包/ lxml的文件

我可以从内部PyCharm没有问题,运行我的脚本,但我一直无法建立,其中包括LXML库的可执行文件。

我使用的命令行pyinstaller 3.3.1。该项目建立,但是当我运行可执行文件,我得到他的输出:

回溯(最后最近一次调用):文件“analyze.py”,13号线,在导入错误:没有模块名为LXML [4222]未能执行脚本分析

我一直在寻找一些命令行开关,它告诉pyinstaller为包括VENV目录下的依赖,没有运气。

任何帮助将非常感激...

这是我的生成命令和输出:

pyinstaller --clean --onefile analyze.py
51 INFO: PyInstaller: 3.3.1
51 INFO: Python: 2.7.10
60 INFO: Platform: Darwin-17.4.0-x86_64-i386-64bit
60 INFO: wrote /Users/gludwig/PycharmProjects/XML_Analyzer/analyze.spec
66 INFO: UPX is not available.
66 INFO: Removing temporary files and cleaning cache in /Users/gludwig/Library/Application Support/pyinstaller
76 INFO: Extending PYTHONPATH with paths
['/Users/gludwig/PycharmProjects/XML_Analyzer',
 '/Users/gludwig/PycharmProjects/XML_Analyzer']
76 INFO: checking Analysis
76 INFO: Building Analysis because out00-Analysis.toc is non existent
76 INFO: Initializing module dependency graph...
79 INFO: Initializing module graph hooks...
130 INFO: running Analysis out00-Analysis.toc
138 INFO: Caching module hooks...
141 INFO: Analyzing /Users/gludwig/PycharmProjects/XML_Analyzer/analyze.py
2363 INFO: Loading module hooks...
2364 INFO: Loading module hook "hook-httplib.py"...
2364 INFO: Loading module hook "hook-encodings.py"...
2874 INFO: Looking for ctypes DLLs
2874 INFO: Analyzing run-time hooks ...
2879 INFO: Looking for dynamic libraries
2995 INFO: Looking for eggs
2995 INFO: Using Python library /System/Library/Frameworks/Python.framework/Versions/2.7/Python
2996 INFO: Warnings written to /Users/gludwig/PycharmProjects/XML_Analyzer/build/analyze/warnanalyze.txt
3009 INFO: Graph cross-reference written to /Users/gludwig/PycharmProjects/XML_Analyzer/build/analyze/xref-analyze.html
3087 INFO: checking PYZ
3087 INFO: Building PYZ because out00-PYZ.toc is non existent
3087 INFO: Building PYZ (ZlibArchive) /Users/gludwig/PycharmProjects/XML_Analyzer/build/analyze/out00-PYZ.pyz
3331 INFO: Building PYZ (ZlibArchive) /Users/gludwig/PycharmProjects/XML_Analyzer/build/analyze/out00-PYZ.pyz completed successfully.
3403 INFO: checking PKG
3403 INFO: Building PKG because out00-PKG.toc is non existent
3403 INFO: Building PKG (CArchive) out00-PKG.pkg
5669 INFO: Building PKG (CArchive) out00-PKG.pkg completed successfully.
5685 INFO: Bootloader /Users/gludwig/Library/Python/2.7/lib/python/site-packages/PyInstaller/bootloader/Darwin-64bit/run
5685 INFO: checking EXE
5685 INFO: Building EXE because out00-EXE.toc is non existent
5685 INFO: Building EXE from out00-EXE.toc
5686 INFO: Appending archive to EXE /Users/gludwig/PycharmProjects/XML_Analyzer/dist/analyze
5703 INFO: Fixing EXE for code signing /Users/gludwig/PycharmProjects/XML_Analyzer/dist/analyze
5716 INFO: Building EXE from out00-EXE.toc completed successfully.

此外,pyinstaller产生下构建一个警告文件,它包含以下内容:

missing module named org - imported by copy
missing module named _sha512 - imported by hashlib
missing module named _sha256 - imported by hashlib
missing module named _md5 - imported by hashlib
missing module named _sha - imported by hashlib
missing module named 'org.python' - imported by pickle
missing module named _subprocess - imported by subprocess
missing module named msvcrt - imported by subprocess, getpass
missing module named riscosenviron - imported by os
missing module named riscospath - imported by os
missing module named riscos - imported by os
missing module named ce - imported by os
missing module named _emx_link - imported by os
missing module named os2 - imported by os
missing module named nt - imported by os, ntpath
missing module named _winreg - imported by mimetypes, urllib
missing module named OverrideFrom23 - imported by Carbon.Res
missing module named SOCKS - imported by ftplib
missing module named rourl2path - imported by urllib
missing module named lxml - imported by /Users/gludwig/PycharmProjects/XML_Analyzer/analyze.py

我也试过在VENV库条目以这种方式pyinstaller供应路径:

PYI-makespec --paths =〜/ PycharmProjects / XML_Analyzer \路径=〜/ PycharmProjects / XML_Analyzer / VENV / LIB / python2.7 / sitepackages / LXML analyze.py pyinstaller --onefile analyze.py

它并没有帮助。

python pycharm pyinstaller macos-high-sierra
2个回答
4
投票

终于解决了它,在这里张贴他人在同一条船上:

事实证明,使用的virtualenv和你想要做的构建时,你必须添加环境变量PYTHONPATH来指向你的virtualenv目录的site-packages目录。就我而言,它看起来像这样:

PYTHONPATH="/Users/gludwig/PycharmProjects/XML_Analyzer/venv/lib/python2.7/site-packages"
export PYTHONPATH

为了方便起见,我加入这个由virtualenv中创建的激活文件,所以当我启动的virtualenv它会自动设置。我还添加了一个“未设置PYTHONPATH”来停用部分。

当virtualenv中设置环境这将是超级有益的,如果这是自动完成的!


3
投票

乔治所提供的答案让我在正确的方向,但我选择了另一条道路;)

我用--paths命令行选项(参见here)来指示站点包目录的位置,并且解决它适合我。我使用Windows,并希望一个可执行文件,所以这是命令行

path\to\pyinstaller.exe --onefile --paths path\to\venv\Lib\site-packages file.py
© www.soinside.com 2019 - 2024. All rights reserved.