Python:使用下载的模块

时间:2010-09-04 07:36:22

标签: python

我是Python的新手,大多使用自己的代码。但是现在我下载了一个我需要解决的软件包。

示例结构:

root\
    externals\
        __init__.py
        cowfactory\
            __init__.py
            cow.py
            milk.py

    kittens.py

现在,cowfactory __init__.pyfrom cowfactory import cow。这会导致导入错误。

我可以修复它并将import语句更改为from externals.cowfactory import cow但有些东西告诉我有一种更简单的方法,因为它不太实用。

另一个修复可能是将cowfactory包放在我的项目的根目录中,但这也不是很整洁。

我想我必须对externals目录中的__init__.py文件做一些事情,但我不确定是什么。

3 个答案:

答案 0 :(得分:7)

在cowfactory包中,应使用相对导入,例如from . import cow。外部的__init__.py文件不是必需的。假设您的项目位于root \并且cowfactory是您下载的外部包,您可以通过两种不同的方式完成:

  1. 安装外部模块

    外部Python包通常附带一个允许您安装它的文件“setup.py”。在Windows上,它将是命令“setup.py bdist_wininst”,并且您将在“dist”目录中获得一个EXE安装程序(如果它正确构建)。使用该安装程序,该软件包将安装在Python安装目录中。之后,您可以像执行import cowfactory一样import os

    如果您安装了pip或easy_install:可以安装许多外部软件包(pip甚至可以轻松卸载)。

  2. 使用PYTHONPATH进行开发

    如果要将所有依赖项保留在项目目录中,请将所有外部程序包保留在externals \文件夹中,然后将该文件夹添加到PYTHONPATH中。如果您使用的是命令行,则可以创建包含

    之类的批处理文件
    set PYTHONPATH=%PYTHONPATH%:externals
    yourprogram.py
    

    我实际上在做类似的事情,但是使用PyDev + Eclipse。在那里,您可以更改“运行配置”以包含环境变量PYTHONPATH,其值为“externals”。设置环境变量后,您只需在自己的模块中import cowfactory即可。请注意,这比from external import cowfactory更好,因为在后一种情况下,一旦安装项目它就不再起作用了(或者你必须将所有外部依赖项安装为名为“external”的包,这是一个坏的主意)。

  3. 同样的解决方案当然也适用于Linux,但使用不同的命令。

答案 1 :(得分:1)

通常,您可以使用easy_install我们的pip在适当的目录中为您安装它。如果由于某种原因无法使用site-packages,则窗口中有一个easy_install目录,您可以放置​​该程序包。在ubuntu上,它是/usr/lib/pythonX.Y/dist-packages。谷歌为您的特定系统。或者您可以将它放在PYTHONPATH环境变量的任何位置。

作为一般规则,将第三方库放在您的程序目录结构中是好的(尽管对于源控件有不同的意见)。这使您的目录结构尽可能简约。

答案 2 :(得分:1)

最简单的方法是使用环境变量$ PYTHONPATH。您可以在运行脚本之前进行设置,如下所示:

export $PYTHONPATH=$PYTHONPATH:/root/externals/

您可以根据需要添加任意数量的文件夹(单独提供),python会在导入时查看所有这些文件夹。