Re: [問題] 如何import所有來自指定目錄的module

作者: VivianAnn (薇薇安安)   2022-04-07 15:59:21
※ 引述《blc (Anemos)》之銘言:
: 我在推文給了錯誤方法,只好再想一個
: containers/__init__.py:
: import os
: __all__ = [i.replace(".py","") for i in os.listdir(__path__[0]) ]
: from . import *
: main.py:
: import containers
: t1 = containers.module1.Test1(6)
: t1.test1()
: 如果要去掉module1那層大概得找其他方法...
: ※ 引述《VivianAnn (薇薇安安)》之銘言:
: : 各位好,以下是本人要處理的檔案
: : main.py
: : containers
: : /module1.py
: : /module2.py
: : /module3.py
: : module1, 2, 3中的程式碼類似,皆如下:
: : class Test1(self):
:
: : def __init__(self, num):
: : self.num = num
: : def test1(self):
: : print("test1")
謝謝blc和lycantrope兩位高手提供的方法,我在本地測試都可以用,但在公司的遠端
Linux主機就不行了,會出現
ModuleNotFoundError: No module named 'containers'
查了一下stackoverflow,我的理解是必須將本工作目錄加到PYTHONPATH, 像是
export PYTHONPATH="${PYTHONPATH}:/path/to/your/project/"
或是有另一招sys.path,sys.path.append("/path/to/your/project/"), 但比較不推荐
想請問版友們都怎麼做
另外我目前有個運行docker container的指令(docker run....),不知能不能將
export PYTHONPATH 的指令也一併放入docker container中
將問各位版有有遇到這樣的問題嗎?
問題寫得有點趕,請多包涵,之後還會再補充的
作者: mikemike1021 (mike)   2022-04-08 03:49:00
可以用 docker run ... bash -c 'export ...; 原先的指令' ;或者可以把 PYTHONPATH 弄出來 加上去後再用 docker run -e PY... 設定;又或者自己弄 image 時設定好

Links booklink

Contact Us: admin [ a t ] ucptt.com