gpt4 book ai didi

python - 如果两个包共享相同的模块名称,您如何支持一个包?

转载 作者:行者123 更新时间:2023-12-04 16:55:22 24 4
gpt4 key购买 nike

所以两个包有相同的模块名称,docopt 和 docopt-ng 都导出 docopt - 当存在依赖关系时,例如

pipenv install pip-upgrader docopt-ng
当您尝试导入时
import docopt
你得到了两者之一,但不是我今天想要的。有什么技巧可以让导入器导入另一个模块(docopt-ng 中的那个模块)?
不起作用的事情:
$ python -c "from docopt-ng import docopt; print(docopt.__file__)"

File "<string>", line 1
from docopt-ng import docopt; print(docopt.__file__)
在 .NET 中,这是通过 four-part names 解决的.

最佳答案

好,我知道了。

  • 使用 --target标志以指定将 docopt-ng 版本安装到不与其他软件包冲突的位置的位置。
  • 将该位置添加到您的 PYTHONPATH env 变量位于普通包目录之前。
  • (docopt) % pip install pip-upgrader
    (docopt) % mkdir shims
    (docopt) % pip install --target /Users/dickfox/docopt/shims docopt-ng
    (docopt) % export PYTHONPATH='/Users/dickfox/docopt/shims'
    (docopt) % python
    >>> import docopt
    >>> docopt.__file__
    '/Users/dickfox/docopt/shims/docopt.py'
    要使用原始版本:
    (docopt) % python
    >>> import sys
    >>> sys.path
    ['', '/Users/dickfox/docopt/shims', ETC...]
    >>> del sys.path[1]
    >>> import docopt
    >>> docopt.__file__
    '/Users/dickfox/lib/python3.8/site-packages/docopt.py'
    使用 sys.path.insert 插入特殊安装位置对我不起作用一旦我已经开始使用python。我不得不使用 env 变量。

    关于python - 如果两个包共享相同的模块名称,您如何支持一个包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70253693/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com