从特定文件夹导入模块

时间:2015-06-11 13:18:43

标签: python

我有一个名为Script的文件夹,里面有temp.py脚本。我的临时脚本从名为lib的子文件夹中导入模块。

Lib文件夹内部为空__init__.py和我的parent_computer_test.py脚本。

我的temp.py脚本中的

是以下代码:

import lib.parent_computer_test as parent_computer_test
parent_computer_test.mainChunk()
parent_computer_test.splitChunks()

我设法从子文件夹导入模块而没有任何更大的问题。

此工作流程/脚本工作正常,由于特定原因,我的lib文件夹必须位于我计算机上的其他位置。有一个很长的故事,但必须这样。

长话短说。我希望temp.py文件夹中的/Script从文件夹lib(或任何其他名称)导入模块parent_computer_test.py,但同时此文件夹不是/Script的文件夹 - 因此它位于计算机的其他位置。它可以是C:/development/...或其他东西。

所以我的问题是如何从特定文件夹导入模块?

3 个答案:

答案 0 :(得分:7)

将lib文件夹的路径附加到SYS PATH环境变量。然后它可以从任何地方导入

import os, sys
lib_path = os.path.abspath(os.path.join('..', '..', '..', 'lib'))
sys.path.append(lib_path)
import mymodule

答案 1 :(得分:5)

import imp
yourModule = imp.load_source('yourModuleName', '/path/to/yourModule.py')
foo = yourModule.YourFunction("You", "get", "the", "idea.")

我意识到这是一个特例,但总的来说,我会避免这样的事情。当你使用绝对路径时,事情会变得很难看,特别是如果你移动东西,我只会将它用于一次性脚本或不会发生很大变化的系统。

编辑:Aswin的答案是一个更好的长期解决方案。

答案 2 :(得分:1)

你必须使用sys.path.append(" path")。但只使用一次。然后试试 import" my_module"。它应该没问题。 如果要删除附加的路径,可以使用, sys.path.remove("路径&#34)。