我有一个名为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/...
或其他东西。
所以我的问题是如何从特定文件夹导入模块?
答案 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)。