![](/img/trans.png)
[英]How Do I Set Up Python Imports Correctly and so I Don't have to manually download them?
[英]How to set up imports correctly in Python?
我的 python 項目具有以下目錄結構。
.
├── AUTHORS.rst
├── CONTRIBUTING.rst
├── HISTORY.rst
├── MANIFEST.in
├── Makefile
├── README.rst
├── __pycache__
│ └── test.cpython-310.pyc
├── docs
├── logs
├── python_server_copy
│ ├── __init__.py
│ ├── cli.py
│ ├── copy.py
│ ├── python_server_copy.py
│ ├── test.py
│ └── utils.py
├── requirements_dev.txt
├── setup.cfg
├── setup.py
├── tests
└── tox.ini
這是基於click
的命令行應用程序。 我在名稱為 package 的文件中定義了導入。 例如:
在copy.py
:
from python_server_copy.utils import get_project_root
但是,這些導入在我測試時不起作用。 直接將文件作為腳本運行時出現ModuleNotFound
錯誤。 每次測試時,我都必須刪除python_server_copy
package 名稱。 如果它作為命令行點擊應用程序運行,一切正常。
我需要有關如何正確測試它和處理導入的建議。 TIA
如果有用的話,我正在使用 python 3.7.11。
當您在 Python 中運行腳本時,其目錄將被添加到sys.path
(Python 查找模塊/包的位置)。 現在,當您直接運行copy.py
時,會添加Parents.../python_server_copy
以及站點包等的一些其他默認路徑。
因此, Parents.../python_server_copy
目錄(或任何其他路徑)中沒有python_server_copy
模塊/包。
相反,您需要添加恰好是項目根目錄的“它的”父目錄,以便它可以找到您的python_server_copy
package。
你有幾個選擇:
import sys
sys.path.insert(0, <Path to root>)
或者直接導入utils
程序,因為它已經可以找到了:
from utils import get_project_root
或者最后,由於您只是在測試,請使用PYTHONPATH
環境變量運行腳本:
PYTHONPATH="abs-path-to-root" python copy.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.