2015-04-04 29 views
4

當前位置:項目名/ src目錄導入類從另一個目錄 - Python的

類地點:項目名/工廠模塊/工廠類

嘗試1:

from FactoryClass1 import FactoryClass1 

嘗試2:

import sys 
sys.path.append(path_to_classes_folder) 
from FactoryClass1 import FactoryClass1 

但是我不斷收到'ImportError:No module named PointSet'。

如何編寫導入語句以便能夠使用類中的函數?

+0

是的,我沒發佈前先搜索,但沒有設法得到它的工作還沒有。 – Elia 2015-04-04 14:47:53

+0

「Project Name」目錄是否僅包含Python源代碼?如果是這樣,你可以考慮把它轉換成一個包。預期如何使用工廠模塊和類?是的,你可以用'sys.path'搞定,但除非你知道自己在做什麼,否則你可能會真的搞砸你未來的可擴展性。提供有關「項目名稱」內容的更多信息。你的'main'位於哪裏? – OozeMeister 2015-04-04 15:00:52

+0

項目名稱也包含其他文件格式(txt,pts,csv,dxf ...) 我應該簡單地將類導入爲模塊並使用它們包含的函數..Main位於src/TryNewFunctions – Elia 2015-04-04 15:13:07

回答

0

您可以嘗試類似:

import os.path, sys 
# Add current dir to search path. 
sys.path.insert(0, "dir_or_path") 
# Add module from the current directory. 
sys.path.insert(0, os.path.dirname(os.path.abspath(os.path.realpath(__file__))) + "/dir") 

這將您的目錄添加到Python搜索路徑。然後你可以照常進口。

要查看哪些路徑已經被添加,檢查由:

import sys 
from pprint import pprint 
pprint(sys.path) 

如果仍然不能正常工作,請確保您的模塊是有效的Python模塊(應包含__init__.py文件的目錄內)。如果不是,請創建一個空的。


備選地只加載類直列,在Python 3你可以使用exec(),例如:

exec(open(filename).read()) 

在Python 2:execfile()

參見:Alternative to execfile in Python 3.2+?


如果運行命令行腳本,也可以通過定義PYTHONPATH變量指定你的Python路徑,所以Python可以在提供的目錄中查找的模塊,例如

PYTHONPATH=$PWD/FooDir ./foo.py 

其他解決方案檢查:How to import other Python files?

+0

我嘗試過,得到第一條路徑爲: 'C:\\ Users \\ ## \\ workspace \\ Project_Name \\ src \\ Factory Modules \\ Factory Classes'' 我仍然得到'ImportError:No module – Elia 2015-04-04 15:11:32

+0

@Elia的錯誤也許你的模塊不是模塊。確保你的模塊添加的路徑包含'__init __。py'。 – kenorb 2015-04-04 15:16:34

+0

那麼,沒有一個文件夾包含'__init __。py' 如果我在類文件夾內創建新的'xx.py',然後使用: 'import FactoryClass1'導入它,那麼一切似乎都很好。但是我無法設法從該文件夾外的'xx.py'文件導入它。 – Elia 2015-04-04 15:23:30