Python:使用下载的模块

2024-06-26 14:30:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不太熟悉,主要使用自己的代码。但现在我下载了一个包,我需要一些问题,我有。

示例结构:

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

    kittens.py

现在,cowfactory的__init__.py执行from cowfactory import cow。这会产生导入错误。

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

另一个解决方案可能是将cowfactory包放在项目的根目录中,但这也不是很整洁。

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


Tags: 代码frompyimport示例init错误root
3条回答

在cowfactory包中,应该使用相对导入,例如from . import cow。不需要外部中的__init__.py文件。假设您的项目位于根目录下,而cowfactory是您下载的外部包,则可以通过两种不同的方式执行此操作:

  1. 安装外部模块

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

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

  2. 利用Python进行开发

    如果要将所有依赖项保存在项目目录中,请将所有外部包保存在externals\文件夹中,并将该文件夹添加到PYTHONPATH中。如果使用命令行,则可以创建包含以下内容的批处理文件

    set PYTHONPATH=%PYTHONPATH%:externals
    yourprogram.py
    

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

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

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

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

您可以添加任意数量的文件夹(由单独提供),导入时python将在所有这些文件夹中查找。

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

一般来说,最好不要将第三方libs放在程序目录结构中(尽管在vis源代码管理方面有不同的意见)。这将使您的目录结构尽可能保持最低限度。

相关问题 更多 >