【问题标题】:pathlib Path resolves installed path directory of package instead of source code directorypathlib Path 解析包的安装路径目录而不是源代码目录
【发布时间】:2019-06-05 13:38:16
【问题描述】:

我已经使用 setup.py 打包了我的项目,项目文件夹结构如下所示。

  api-automation
  api
    packagename
       __init__.py
       user.py
       payloads
         a.json
         b.json    
  tests
    conftest.py
  setup.cfg
  setup.py
  README.rst

我在下面的文件夹中创建了名为“myenv_1”的虚拟环境, /用户/basavarajlamani/文档/环境/ 我已经在这个虚拟环境中安装了上面的 repo。

我在 stackoverflow 和互联网上尝试了很多,但没有找到答案。

user.py 文件代码

from pathlib import Path

current_dir = str(Path(__file__).resolve().parent)

def func():
    print("current_dir", current_dir)

conftest.py 的代码

from packagename.user import func

func()

如果我直接运行 user.py 文件(python3 user.py),我会得到正确的目录路径,如下所示,

current_dir /Users/basavarajlamani/Documents/repos/api-automation/api/packagename

但是,如果我运行 conftest.py 文件(python3 conftest.py),我得到的安装路径如下,我不想要,我想像直接运行 user.py 文件一样获得目录路径,

current_dir
/Users/basavarajlamani/Documents/environments/myenv_1/lib/python3.7/site-packages/packagename

请帮忙,我该如何解决这个问题。

【问题讨论】:

    标签: python python-3.x python-3.7 pathlib


    【解决方案1】:

    我怀疑您在引导开发环境时没有使用正确的选项。

    试试:

    • 清理您的开发 virtualenv 或删除它并创建一个新的。
    • cd the/root/of/your/source/tree
    • pip install -e .

    重要的一点是-e 选项。阅读pip 手册。

    【讨论】:

    • 谢谢, pip install -e 。固定的问题。再次感谢您的帮助。
    • @BasavarajLamani ,如果您觉得有用,可以单击我的答案左侧的上三角。给我声望点;)
    • 我没有必要的声誉,但我接受了你的回答。
    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    相关资源
    最近更新 更多