如何使intellisense与.egg-link软件包(以开发模式安装)一起使用?

时间:2020-10-24 22:06:40

标签: python pip visual-studio-2019 intellisense

在Visual Studio 2019中,我试图让intellisense与使用以下命令安装的软件包一起使用:

pip install -e "git+https://github.com/bmoscon/cryptofeed.git/#egg=cryptofeed"[all]

Here are the docs解释其作用。我在项目虚拟环境中调用了它,一切似乎都正常了(即所有文件似乎都已正确下载并链接了)。

我遇到的问题是intellisense没有拾取主包本身(cryptofeed)(它说“ unresolved import cryptofeed”),而与之一起安装的所有其他依赖包都可以被识别。

经过一些阅读和测试,我非常有信心,它无法正常工作的原因与如何在“开发模式”下安装软件包有关。在我的./env/Lib/site-packages文件夹中,我可以看到cryptofeed是一个.egg-link文件(有关该here的更多信息)。 Visual Studio是否为智能感知处理这些文件(或通常只处理整个“可编辑/开发模式”的东西)?在这里我有误会或做错了什么吗?

我想也值得一提的是,我阅读了这些MS' docs,这使我认为也许我可以通过在源代码中添加搜索路径来实现“ hacky”解决方案,但这似乎并没有解决或做任何事情。

1 个答案:

答案 0 :(得分:1)

我终于可以正常工作了。我已经在多个repos / packages上尝试过,并且对所有这些都有效。

解决方案包括手动添加搜索路径(如我在问题帖中所述)。我不知道为什么,但是添加的搜索路径似乎必须以 python 包的根目录为目标。如果我仅添加了包含源代码的目录,它将无法正常工作。

即如果已安装的软件包的源目录包含以下子目录:

pkgDir
├── pkgName
├── pkgName.egg-info
└── tests

在此示例中,您应尝试添加pkgDir而不是pkgName作为搜索路径。此目录还包含其他重要文件,例如setup.py;也许这些文件之一对于intellisense的功能是必需的? IDK。

有时程序包支持多种语言,因此请确保添加用于 python 的目录。 IIRC,与安装软件包时为“子目录”标志/设置设置的目录相同。

例如: pip install -e "git+https://github.com/ccxt/ccxt.git/#egg=ccxt&subdirectory=python"

如果subdirectory位于根目录,则可能不需要使用setup.py设置,但是从本质上讲,这意味着它似乎可以与包含setup.py的目录一起使用(以及.egg-info文件夹)。


再次,我真的不知道为什么这确实可行。您需要定位的文件夹可能看起来与我描述的文件夹完全不同。也许其他人可以给出更具体的答案。

我应该提到,智能加载需要花费一些时间(可能取决于软件包的大小)。不要太快地假设搜索路径错误(对我而言,它花费了大约1从我添加搜索路径开始的一分钟)。

根据Visual Studio(2019)的MS文档python支持选项和设置here,它具有“添加链接文件时更新搜索路径”选项。默认情况下启用了此功能,似乎无法实现此目的;似乎是指另一种链接文件。

相关问题