gpt4 book ai didi

python - 在导入中分配 .src 前缀的 Src 布局?在 PyCharm 终端中激活 venv 以进行开发安装

转载 作者:行者123 更新时间:2023-12-03 23:06:18 26 4
gpt4 key购买 nike

我想了解将 setuptools 与 "src/ layout" 一起使用的正确极简方式。以一种使用 src. 分配的方式进口前缀?
我已经阅读了大部分 PyPAsetuptools文档(及其许多用例),但我不明白什么是做这个例子的正确方法。
下面的布局重现了我想要实现的目标。我无法理解如何在 mylibrary 的所有模块中使用第二个导入而不是第一个导入。包裹:

from src.mylibrary.hello_word import hello_function # <- This works.
from mylibrary.hello_word import hello_function # <- How to get this working?

hello_function()
使用此目录/文件结构:
C:\MyProject

│ setup.py

└───src

├──mylibrary
│ hello_word.py
│ module_two.py
│ __init__.py

当我使用 development mode使用 pip install -e . 安装egg 目录被添加到上面的树中:
    │ (...)

└──mylibrary.egg-info
dependency_links.txt
PKG-INFO
SOURCES.txt
top_level.txt
有了这个 setup.py :
from setuptools import setup, find_packages, find_namespace_packages

setup(
name='mylibrary',
version='0.1',
package_dir={'': 'src'},
# packages=find_namespace_packages(where='src'), # <- I suppose this isn't the deciding factor.
packages=find_packages(where='src'),
)
简单的 hello_world.py我想放弃的模块必须写 src.导入时。
def hello_function():
print("hello world")
__init__.py留空。
我正在使用 venv,令我惊讶的是,egg 符号链接(symbolic link)没有写入 venv sitepackages但是到 C:\Users\Name\AppData\Roaming\Python\Python38\site-packages ...
Python 控制台指示 mylibrary发现包:
>>> from setuptools import find_packages
>>> find_packages(where='src')
['mylibrary']

最佳答案

更新/解决方法
可以按照 this link 中的步骤进行操作。将文件夹标记为 source root .从链接:

Source roots the Source root icon contain the actual source files andresources. PyCharm uses the source roots as the starting point forresolving imports


这样我们就不必再安装它或更改路径了(尽管它对我来说仍然有 pip 棘手)
1. Pycharm有一个 pip问题:
每当我运行 pip在pycharm终端中运行系统的 pip由于某些原因。您可以使用 which pip 进行检查命令。但是如果我运行 python -m pip它做正确的事。
2.它应该实际承认进口:
话虽如此,我真的不知道为什么 pycharm 无法识别没有 src. 的导入。字首。我从 github 克隆了 `cryptography 包,它可以正常识别,src 文件夹会自动添加到路径中,但我不知道如何。
无论哪种方式,您的代码都可以在没有前缀的情况下按预期工作,并且 Vim(使用 Pyright)可以完美地识别它。即使在 pycharm 上运行它实际上也适用于所有导入错误。
3. 现在该怎么办?
在他们修复它或者我找到解决方案之前,我将手动将 src 文件夹添加到解释器设置中的路径中,因为我不想安装它(但我希望能够达到峰值并转到定义)。
如果我真的想安装包,我会在终端或 pycharm 内部使用 python -m pip install -e -v .

关于python - 在导入中分配 .src 前缀的 Src 布局?在 PyCharm 终端中激活 venv 以进行开发安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62498127/

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