[英]Confused with python import (absolute and relative)
我為它創建了項目和幫助模塊。 但是一些模塊正在相互使用,例如 worker 1 使用 helper1,helper2 也使用 helper1。 所以我完全混淆了我需要如何導入所有這些模塊,以便可以獨立工作(例如,我想從主腳本中調試 helper2)並且它們仍然可以正常工作。 總結 - 如何正確導入模塊,以便在 main_script 之外使用時 maint_script 和其他模塊可以正常工作。 對不起我的英語不好。
main program dir/ main_script.py -classes/ | |--helper1.py |--helper2.py -worker_classes/ | |--worker1.py
目前我在每個腳本的請求中都使用了這種結構,但我覺得這種方法不適用於 python
import os
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'shell_modules')))
我處理項目內部導入的方式是在可編輯模式下安裝項目。 這樣,所有文件將能夠相互定位,始終從您的項目根目錄開始。
為此,請執行以下步驟:
1) 編寫一個 setup.py 文件並將其添加到您的項目根文件夾 - 它根本不需要太多信息:
# setup.py
from setuptools import setup, find_packages
setup(name='MyPackageName', version='1.0.0', packages=find_packages())
2) 以可編輯模式安裝您的軟件包(最好是從虛擬環境中)。 從項目文件夾中的終端,寫入
$ pip install -e .
請注意點 - 這意味着“以可編輯模式從當前目錄安裝包”。
3) 您的文件現在可以相互定位,始終從項目根目錄開始。 例如,要導入helper1.py
,您可以編寫:
from classes import helper1
或者:
from classes.helper1 import foo, bar
為任何文件導入helper1.py
都是如此,無論它位於項目結構中的哪個位置。
就像我說的,你應該為此使用一個虛擬環境,這樣 pip 就不會將你的包安裝到你的主要 Python 安裝中(如果你的項目有很多依賴項,這可能會很混亂)。
目前我最喜歡的工具是pipenv 。 使用時,將終端命令替換為
$ pipenv install -e .
這樣您的項目就會被添加到 Pipfile 中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.