PTVS:如何在一个项目中从另一个项目引用或使用 Python 源代码

PTVS: How to reference or use Python source code in one project from a second project

在带有 PTVS 的 Visual Studio 中,我有两个单独的 Python 项目,其中一个包含一个名为 lib.py 的 Python 源文件用作函数库,另一个是使用库中函数的 main。我在 main 中使用 import 语句来引用库项目中的函数,但出现以下错误:

No module named lib

我主要使用 Visual Studio 在 F# 中编程,所以我的想法是添加对其他 .NET 项目的引用。

我怎么想 Pythonic 方法来完成这个?

Python 不像 .NET 那样使用引用,而是使用搜索的路径。需要修改搜索路径以包括包含源文件的目录。参见:The Module Search Path

查看 Visual Studio 中 Solution Explorer 的项目显示每个项目 Search Paths

修改搜索路径:

获取包含要导入的源代码的 Python 文件的目录。

例如lib.py

在解决方案资源管理器中右键单击 lib.py 和 select Copy Path

现在对于将导入模块的项目
例如ConsoleDriver_Python

右键单击 Search Paths 和 select Add Folder to Search Path...

显示 select 文件夹对话框

右键单击并粘贴剪贴板中的路径。也可以通过删除文件名将其更改为目录。

点击Select Folder

现在检查项目以确保 Search Path 已更新。

现在应该清除导入错误。

除了经过验证的答案之外,我只想针对非常具体的情况添加以下内容。

我最近被要求解决 OP 在工作机器上遇到的相同问题,该机器最近将用户帐户迁移到新域。

设置: Visual Studio 2013 PTVS 2.2.30718 蟒蛇 3.5

基本上,Anaconda 是为 localmachine/UserA 安装的。

将用户迁移到新域 (newdomain/UserA) 后,必须从 VS2013 中更新 Python 环境,方法是单击查看 > 其他 Windows > Python环境。

设置完成后,python 脚本将按预期 运行,尽管搜索文件夹引用的 none 会起作用。然后他们被删除 re-added 但无济于事。

尝试了各种其他方法,包括设置全新的项目,并使用搜索路径链接它们,但无济于事。

解决问题的唯一方法是在用户帐户之外重新安装 Python 环境(在我的例子中是 Anaconda3)(通过在安装过程中单击 "for all users, using administrator privileges" 选项)。

然后我重新启动,删除并 re-added 搜索文件夹,python 按预期工作,包括所有搜索路径。

我希望这对某人有所帮助,因为我只是浪费了几个小时来解决它...

D :)

或者您可以使用以下代码在代码中执行此操作:

sys.path.append("search path")

这样代码就可以运行在IDE之外了。