2017-12-03 181 views
0

的bash腳本如下所示:設置PYTHONPATH和運行Python腳本在bash

#!/bin/bash 
export PYTHONPATH="$PYTHONPATH:/path/to/expackage/" 
python example.py 

讓我們把這個bash腳本 'exbash'。該Python腳本 'example.py' 看起來像下面這樣:

try: 
    from expackage import exmodule 
    print 'it worked' 
except: 
    print 'it didn't work' 

發出命令

./exbash 

工作正常。但是,如果我有examply.py電話與進口exmodule例如另一個腳本

# Begin example.py 
try: 
    from example2 import ex2 
    print 'it worked' 
except: 
    print 'it didn't work' 

其中example2.py看起來像

# Begin example2.py 
from expackage import exmodule 
class ex2: 
    def __init__(self): 
    .......... 
if __name__== "__main__": 
    .......... 

模塊未能在example2.py加載。即我得到錯誤

File "/path/to/example2.py", line .., in <module> 
from expackage.exmodule import something 
ImportError: No module named expackage.exmodule 
+0

使用'source exbash'給出相同的錯誤 –

+0

您不從目錄中導入,從包和模塊中導入。 https://docs.python.org/2/tutorial/modules.html –

+0

@ IgnacioVazquez-Abrams抱歉,我的意思是軟件包,而不是目錄。但問題仍然存在 –

回答

0

你確定你已經寫好了模塊嗎? Python似乎能夠導入'包'包,但似乎無法在其中找到'模塊'。你能分享'包'的內容,以便更容易調試嗎?

+0

'package'包含一個'__init __。py'文件和一個'module.py'和'module.pyc文件'。如果我刪除'exbash'的最後一行併發出命令'source exbash',然後發出命令'python example.py',我就會得到輸出'it worked'。使用環境變量的問題似乎有些微妙 –

+0

更改'example.py'的第二行以導入包也給出了類似的錯誤 –

+0

您可以將第一行的exbash轉移到另一個文件(可以說exbash_source)並在exbash中添加「source exbash_source」。 –