提供一个源代码的文件夹,其中包含所有外部库

时间:2011-09-26 19:34:21

标签: python import

我有以下文件夹结构

  • LIB
  • my_module

我已将所需的所有库移到lib /文件夹中。

在我的module/__init__.py中,我想我会这样做:

import sys
sys.path.append('../lib/')
import my_dependency

然后,当我需要使用此依赖项时,我将其称为

my_module.my_dependency

这是Python导入的错误用法吗?

注意:依赖项包含一些第三方库,这些库不是通过pip / easy_install提供的,而是我写的一些C ++内容。

2 个答案:

答案 0 :(得分:1)

sys.path.append('../lib/')假定当前工作目录是脚本的目录,可能是也可能不是。

不依赖于工作目录的版本是:

import sys, os
sys.path.append(os.path.join(os.path.split(os.path.split(os.path.abspath(sys.argv[0]))[0])[0], "lib"))
import my_dependency

上面的普通语言采用脚本的完整路径,删除最后两个组件(脚本目录和脚本文件名)并附加lib

答案 1 :(得分:0)

如果您使用的库是第三方模块 - 特别是受欢迎的库 - 命名它们就像它会很快变得不一致。您最终会得到有时被引用为bar且有时被引用为foo.bar的代码。保持这样的代码库不值得你期望通过为它们加上前缀获得的任何收益。

如果您将第三方代码保留在自己的存储库中,请考虑将其替换为requirements.txt文件,该文件可以提供给easy_installpip等实用程序。这两个工具都支持安装到您的主目录的--user开关(不接触系统内容)。

pip install -r requirements.txt --user