![](/img/trans.png)
[英]Pycharm - Import Module in Python - Different behaviour - MAC vs Windows
[英]Different module import in Mac python vs. spyder
我最近問了這個問題,關於在python中導入任意數量的模塊。 我收到了兩個很好的答案。 當我在spyder中編程時,兩者都起作用。
今天,我打算從終端運行腳本作為測試,因為我打算將代碼移至服務器。 但是這次,腳本因以下回溯而崩潰:
File "evaluation.py", line 27, in __init__
self.solvers.append( __import__(file_name[:-3]) ) #cut away .py
ImportError: No module named 'v00'
文件架構如下所示:
-evaluation.py
-evaluation
-v00.py
-v01.py
Evaluation.py中引起麻煩的代碼是以下代碼:
os.chdir('evaluation')
for file_name in glob.glob("*.py"):
self.solvers.append( __import__(file_name[:-3]) ) #cut away .py
for idx, solver in enumerate(self.solvers):
self.dqn.append(solver.DQNSolver() )
為什么這在spyder中起作用但在終端中不起作用? 他們都使用python 3.5,在執行惡意代碼時,我再次檢查了它們是否都在“評估”文件夾中。
解決此問題的典型方法是通過添加一個空的__init__.py
文件將文件夾變成一個包,然后使用import evaluation.v00
(或等效的__import__
函數調用)從該包中import evaluation.v00
。 但是您可能會遇到問題,因為您的主腳本與軟件包的名稱相同。 我建議重命名其中一個
-evaluationscript.py
-evaluation
-__init__.py (empty file)
-v00.py
-v01.py
然后你可能需要使用import_module而不是__import__
填充solvers
與實際模塊(而不是封裝)。
我對spyder不熟悉,但是如果相同的代碼在那里工作,則可能是通過PYTHONPATH
env var或通過修改sys.path
將評估文件夾添加到搜索路徑中。
運行腳本時,腳本的路徑將添加到模塊導入的默認搜索路徑,但是使用os.chdir
更改文件夾不會影響該搜索路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.