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