繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM