2011-09-15 98 views
2

有没有什么办法在Python中创建虚拟导入路径?Python:创建虚拟导入路径

我的目录结构是这样的:

  • /
    • 本地
      • 脚本
        • some.py
        • another.py
      • [其它无关显示目录]

根是从被执行的程序,其中的目录。 ATM我添加native/scripts/到搜索路径所以我可以做import some, another代替from native.scripts import some, another,但我希望能够做到这样的:

from native import some 
import native.another 

有什么办法来实现这一目标?


相关问题:
Making a virtual package available via sys.modules

回答

2

为什么不动some.pyanother.py伸到native DIRECTO以便一切正常工作,以便稍后返回源代码的人员不会为什么事物是可导入的而不会被混淆? :)

更新:

感谢您的意见;他们已经有用地澄清了问题!在你的情况下,我通常把我可能想要导入的函数和类放在里面,比如native.some,我可以很容易的找到它们。但后来我得到的脚本代码,并只有脚本代码 - 只有薄垫片,它解释参数,并开始一切通过传递那些为main()go()功能参数运行 - 并把一个scripts目录内。这将外部接口代码与您可能想要导入的代码完全分离,并且意味着您不必尝试将Python一次性伪装成具有多个模块的模块。

+0

为什么不把所有的文件都放在根目录下,并完成它。 ;) –

+0

我将文件保留在根目录之外,以避免与标准库和第三方模块的名称冲突,我可能需要从PyPI获得 - 我只能在顶层取得一个名称,而不是几个名称。这就是为什么。 :) –

+0

我正在写的是一个嵌入Python的应用程序,而不是用Python编写的。在我的具体情况下,如果我可以通过'native'包引用本机脚本,而不会污染目录本身,情况会更好。 –

3

/native/__init__.py,包括:

from scripts import some, another 
+4

请注意,如果他在'scripts'本身中还有一个'__init __。py',它才会有效。 (也许这对他来说很明显?)另外,这意味着脚本不是按需导入的,但是在'native'本身被导入的那一刻就会被导入;但在大多数情况下并不重要。 –

+0

这是一个解决方案,但后来我不能'import native.some' —我也希望能够做到这一点。 –

+2

@Paul为什么不把'some.py'和'other.py'移动到'native /'然后呢?看起来这就是你真正想要的。 – phihag