【问题标题】:Python & docker: how can i add packages into sys.path?Python & docker:如何将包添加到 sys.path 中?
【发布时间】:2019-03-14 21:53:23
【问题描述】:

我尝试解决了好几次,但我在任何地方都找不到。

让我说清楚。

我在C:/Users中创建game,这是一个包,由like组成

game/__init__.py
game/sound/__init__.py
game/sound/echo.py

我通过 Pycharm 在其他位置执行 Test_Module.py

我试试

>>> sys.path.append("C:/Users/game")

>>> sys.path.insert(0, "C:/Users/game")

当我导入游戏时,Pycharm 中有红色下划线

docker 中没有出现名为“game”的模块。

我也做了项目解释器来选择路径。但它只是使红色下划线消失,仍然不起作用

没有名为“游戏”的模块

好吧,如果我将game 文件移动到我执行Test_Module.py 的文件夹中,那么它完全可以在没有sys.path.append 的情况下工作,而只是import game

【问题讨论】:

    标签: python package pythonpath sys.path


    【解决方案1】:

    我在 Linux 上,所以我尝试像这样复制你的包结构。

    mkdir -p game/sound
    touch game/__init__.py
    touch game/sound/__init__.py
    touch game/sound/echo.py
    

    现在我的目录是这样的

    $ tree                                                                                                                                                        
    .
    └── game
        ├── __init__.py
        └── sound
            ├── echo.py
            └── __init__.py
    

    echo.py 包含这个

    def hello():
        print("hello")
    

    如果我启动python解释器,我可以调用函数

    $ python
    Python 3.6.4 (default, Jul 17 2018, 18:32:53) 
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from game.sound import echo
    >>> dir(echo)
    ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'hello']
    >>> echo.hello()
    

    而且返回正确

    hello
    

    我在 pycharm 中打开了它,看起来它可以正确找到所有内容。如果您按照我在单独目录中所做的操作并在 pycharm 中打开,这对您有用吗?

    【讨论】:

    • 是的,它可以工作,但是当我将包文件的路径附加到 sys.path 时发生了。我认为包树没有任何问题......还是写路径的方式不对? print(sys.path)时为['/sample', '/opt/conda/lib/python37.zip', '/opt/conda/lib/python3.7', '/opt/conda/lib/ python3.7/lib-dynload'、'/opt/conda/lib/python3.7/site-packages'、'C:/Users/conkj/game']。最后一个是我的包的路径,第一个叫做'sample'是我执行Pycharm的地方。
    猜你喜欢
    • 2023-03-23
    • 2021-12-13
    • 1970-01-01
    • 2015-10-03
    • 2013-04-13
    • 1970-01-01
    • 2012-08-28
    • 2022-07-27
    相关资源
    最近更新 更多