[英]“Can't find '__main__' module in” error whenever I try to run a python script in the command line
[英]Python script run on command line can't find site packages
我使用 PyDev for Eclipe 编写了一个 Python 应用程序 Python 2.7,脚本在其中完美执行。 但是,如果我尝试在命令行上运行它,则会出现以下错误:
importError: No module named openpyxl
openpyxl 是我在我的应用程序中使用的外部库之一。 我搜索了解决方案并找到了多个线程,其中一些位于此站点上。 它们都处理由程序员自己创建的模块,并且需要将 src 文件夹附加到路径中。 这对我不起作用。 我也尝试将站点 package 目录添加到我的 Python 路径,但错误仍然存在。
此外,运行的脚本 (main.py) 位于 src 目录中,如下所示:
/Crawler/
/src
__init__.py
main.py
/Crawlers
__init__.py
Crawler1.py
Crawler2.py
如何配置我的脚本,以便它在从命令行执行时找到所有外部库?
检查默认的python版本是否实际上是2.7。 运行python --version
。 如果默认值不是2.7,请使用2.7解释器调用脚本;否则,请参见2.7。
python2.7 <yourscriptname>
或者,如果您使用的是UNIX或OSX,则将脚本的第一行更改为实际调用python 2.7;否则,请执行以下操作。
#!/usr/bin/env python2.7
编辑 :如果python版本正确,请检查是否可以从交互式解释器导入模块。 如果您得到的输出类似于以下内容,则说明openpyxl
安装不正确。
python
Python 2.7.8 (default, Jul 20 2014, 12:09:51)
[GCC 4.2.1 Compatible FreeBSD Clang 3.4 (tags/RELEASE_34/final 197956)] on freebsd10
Type "help", "copyright", "credits" or "license" for more information.
>>> import openpyxl
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named openpyxl
>>>
您可以检查path变量以找出python在哪里寻找已安装的模块
import sys
print(sys.path)
您的openpyxl
模块必须位于其中之一的子文件夹中。 如果此程序包不在子文件夹之一中,则有几种解决方案。 如您所指出的那样,您可以使用PYTHONPATH
并在cmd行上添加包含openpyxl
的文件夹,或者您也可以通过sys
模块在运行时添加该文件夹。
import sys
sys,path.append('/path/to/module/')
另一种方法是使用模块随附的setup.py
python setup.py install --user
将模块安装到python-path中。 或者使用pip从PyPi安装它, pip install --user openpyxl
由于虚拟环境,我遇到了类似的问题。 如果您使用的是 venv,则必须先在终端中激活它。 Go 到你的项目目录,执行venv\Scripts\activate
然后运行你的脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.