[英]Best practice for configuring local python package imports for github repo?
我對進口很陌生,所以我的方法可能不完整,但我真的很難拼湊出應該如何完成的工作。
所以我有一個 github repo 我正在處理,目前看起來像這樣:
Github-repo-name
/src
/repo-name
__init__.py
/packages
__init__.py
mypackage1/
__init__.py
p1_module1.py
mypackage2/
__init__.py
p2_module1.py
main.py
/scripts
do_something.py
/datasets
我正在嘗試將 mypackage1 導入 do_something.py 以生成一些數據以放入 datasets/ 中,但是當我在src目錄中運行 do_something.py 腳本時遇到了很多麻煩。
我在 do_something.py 中有這一行:
import repo-name.packages.mypackage1
並且被擊中: ModuleNotFoundError:沒有名為 repo-name 的模塊
我嘗試了相對進口,但沒有成功
from ..repo-name.packages import mypackage1
ImportError:嘗試在沒有已知父 package 的情況下進行相對導入
我無法解決這個問題,所以我嘗試將我的包添加到 do_something.py 的路徑中
file_path = pathlib.Path(__file__)
path = file_path.resolve().parents[2]
sys.path.append(str(path))
import repo-name.packages.mypackage1
成功!
除了現在我想知道這是否真的是我應該做的,如果這不是有點 hacky。 需要在運行時添加路徑的想法似乎有點混亂,所以我寧願一直擁有它。 我已經讀過我可以使用 PYTHONPATH 來達到這個目的,如果只有我使用這個 repo 那就太好了,但我打算共享和復制它。 我想也許寫一個 shell 腳本來設置 PYTHONPATH 但我不確定這會好得多。
所以我的問題是做我想做的事情的正確/更好/好方法是什么?
奧利弗。
我不知道什么是最好的方法,但我想向您展示我們團隊的工作方式。
開發時,
i) 在~/.bashrc
中注冊PYTHONPATH
ii) sys.path.append(path/to/root/repo)
在代碼的頂部
我們的團隊通常將其作為初始方式。
要區分他們是否獲得repo的權限,您可以檢查以下內容。
# Suppose you created a setup.py(to make `.whl` file) on `repo-name`.
if __name__ == '__main__':
from repo-name.packages.mypackage1 import *
else:
from ..repo-name.packages.mypackage1 import *
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.