在命令行上运行的Python脚本无法找到站点包

时间:2014-07-29 10:30:13

标签: python importerror

我使用PyDev为Eclipe编写了一个Python 2.7应用程序,脚本执行完美。但是,如果我尝试在命令行上运行它,我会收到以下错误:

importError: No module named openpyxl

openpyxl是我在我的应用程序中使用的外部库之一。我搜索了解决方案,发现了多个线程,其中一些在此网站上。所有这些都处理由程序员自己创建的模块,并且需要将src文件夹附加到路径中。这对我不起作用。我也尝试将网站包目录添加到我的Python路径中,但仍然存在错误。

此外,运行的脚本(main.py)位于src目录中,如下所示:

/Crawler/
    /src
        __init__.py
        main.py
        /Crawlers
            __init__.py
            Crawler1.py
            Crawler2.py

如何配置我的脚本,以便在从命令行执行时找到所有外部库?

2 个答案:

答案 0 :(得分:2)

检查默认的python版本是否实际为2.7。运行python --version。如果默认值不是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
>>>

答案 1 :(得分:0)

您可以检查路径变量以找出python在哪里寻找已安装的模块

import sys
print(sys.path)

您的openpyxl模块必须位于其中一个模块的子文件夹中。如果此包不在其中一个子文件夹中,则有几种解决方案。一个是指出要使用PYTHONPATH并在cmd-line上添加包含openpyxl的文件夹,或者也可以在sys模块中添加文件夹,以便在运行时添加文件夹。

import sys
sys,path.append('/path/to/module/')

另一种方法是使用随附的setup.py python setup.py install --user将模块安装到python路径中。或者使用pip pip install --user openpyxl

从PyPi安装它