簡體   English   中英

從另一個目錄運行Python腳本

[英]Running Python a script from another directory

首先,假設以下文件結構:

project-dir
|_ 
   package1
   |_ 
      __init__.py
      module1.py
      module2.py

以及以下腳本內容:

module2.py:

def func_module2():
    print('func_module2 run')

module1.py:

from package1 import module2

module2.func_module2()

從項目目錄執行以下命令會產生錯誤:

python package1/module1.py

錯誤:

Traceback (most recent call last):
  File "./package1/module1.py", line 1, in <module>
    from package1 import module2
ImportError: No module named 'package1'

為什么會發生這種情況,又有可能從另一個目錄運行Python腳本嗎?

Python 3.5.2

您的問題似乎是module1.pymodule2.py都位於同一包中。 module1.py您不會在另一個軟件包中找到module2.py 而是嘗試:

import module2

module2.func_module()

嘗試我得到:

> python package1/module1.py
func_module2 run

但是,如果您希望它也作為軟件包工作(或使用新版本的python),則必須使用

from . import module2

module2.func_module()

但這會使python package1/module1.py無法工作,因為它不會作為程序包的一部分運行。 相反,您可以使用

> python -m package1.module1
func_module2 run

module2module1在同一名稱空間下。 因此它必須是:

# module1.py
import module2

module2.func_module2()

from package1 import module2僅在以下上下文/名稱空間中有效:

在此處輸入圖片說明

例:

# test.py
from package1 import module2

module2.func_module2()

暫無
暫無

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

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