簡體   English   中英

無法在父目錄中導入模塊

[英]Cannot import a module in parent directory

我正在嘗試在Ubuntu 17中運行一個python項目,但模塊加載時遇到問題。 我已經用一個簡單的例子解決了這個問題。 該示例在Windows 10中有效,但在Ubuntu中不適用。 幫助使它正常工作將不勝感激!

這是我要執行的步驟:

首先,我在〜/ dev中創建一個名為code_playground的項目目錄。 接下來,我為此項目創建一個virtualenv:

~/dev$ which virtualenv
/usr/local/bin/virtualenv

~/dev$ virtualenv -p python3.6 code_playground/
Running virtualenv with interpreter /usr/bin/python3.6
Using base prefix '/usr'
New python executable in /home/user/dev/code_playground/bin/python3.6
Also creating executable in /home/user/dev/code_playground/bin/python
Installing setuptools, pip, wheel...done.

我激活虛擬環境:

~/dev/code_playground$ source ./bin/activate
(code_playground) ~/dev/code_playground$ 

似乎有效:

(code_playground) ~/dev/code_playground$ which python
/home/user/dev/code_playground/bin/python

我創建了一個名為mod_a.py的文件,其中包含一個簡單的函數:

def print_name(name):
    print('Your name is {0}'.format(name))

現在,我創建一個名為sub的子目錄:

(code playground) ~/dev/code_playground$ mkdir sub
(code playground) ~/dev/code_playground$ cd sub
(code playground) ~/dev/code_playground/sub$ 

在sub內部,我創建了一個名為mod_b.py的文件,其中包含以下內容:

from mod_a import print_name

print_name('Joe')

我嘗試運行mod_b.py,但出現錯誤:

(code playground) ~/dev/code_playground/sub$ python mod_b.py 
Traceback (most recent call last):
   File "mod_b.py", line 1, in <module>
      from mod_a import print_name
ImportError: No module named mod_a

Python解釋器必須知道在哪里可以找到module_a.py 導入模塊module_a.py的文件位於module_a.py所在目錄的子目錄中, module_a.py “沒有太大幫助”。 您可以嘗試幾件事:

1- mod_a.py的建議,將mod_a.py路徑(在腳本運行之前)添加到Python的路徑。

2-將您的mod_a.py路徑(使用Python代碼)添加到Python路徑中,執行類似(討厭的)的操作:

import
sys.path.insert(0, '/home/user/dev/code_playground/bin/python')
from mod_a import print_name
...

3-評估相對進口( 6.4.2。內包裝參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM