【解决】 Visual Studio 2019 调用Python文件

【解决】 Visual Studio 2019 调用Python文件

很累了,直入主题。我想在visual Studio中调用一个python文件,完成绘图,数据统计处理等工作 (毕竟Python天天杀死Excel)

不太懂Python,网上查了很多很多教程,有的有用,有的没用,这两天干了很多无用功,好在是最后成功了。记录一下踩坑过程。

如果您的python已经安装好并且成功进行过python代码调试的话,可以直接跳到vs环境的配置。

Python的安装

首先,建议一定要从官网下载安装包进行安装!!! 务必!!!

首先是Python的安装,我想如果按照网上的大部分教程来,通过官网下载Python安装包,按部就班的一步一步来,都不会有问题。

偏偏我有点问题,因为记不得电脑上以前有没有安装过Python,所以在命令提示符cmd里面输入了python语句,想看看是否曾经安装过,如果安装过,版本是多少。然后它给我跳出了一个微软商店的python安装地址。我有点头铁,就一路安装下去了,悲剧发生。。。

首先是安装路径有点不对头,,不知道为什么这个路径这么长一串,这和我在网上看到的帖子一点都不一样。。

【解决】 Visual Studio 2019 调用Python文件_第1张图片

其次是,我想双击打开这个python.exe检查一下是否正常的时候,它给我报了个权限不足的错误。挺无语的,而且我也不能访问它的上层目录。告诉我权限不足。

然后我又发现了一个目录

【解决】 Visual Studio 2019 调用Python文件_第2张图片

在这个目录下,我是可以双击打开python.exe文件的,但是为什么这个文件夹里面所有的东西大小都显示为0?好像假的一样 (俺不懂,到现在也不懂,有大佬明白的请告诉我一下)

但是后面在vs中配置的时候,要让我添加python的库文件和libs路径,但是这个诡异的路径下没有这俩文件,所以只能想办法把上面那个看起来像真货的文件夹地权限修改了,把WindowsApps文件夹改成完全控制了。具体参考这个帖子修改

Visual Studio环境的配置

接下来进入正题,对visual studio 进行一点配置。

首先 我看到一个说法是,vs调用python,必须把解决方案配置修改成Release,这很重要,涉及到接下来的配置。

【解决】 Visual Studio 2019 调用Python文件_第3张图片

我尝试了很多种可能,这里贴出最万无一失的配置

  1. 首先是包含目录库目录中分别添加python的include路径和python库路径

【解决】 Visual Studio 2019 调用Python文件_第4张图片

包含目录下放的是python 的include路径,这个路径就是这俩文件夹的路径。把路径直接添加到后面,记得要用;分号隔开。

【解决】 Visual Studio 2019 调用Python文件_第5张图片

如果你是从官网安装的python,你的安装路径应该是一个非常简约的路径,一般是一个/Python3* /include 和/Python3* /libs

这样的,如果你不确定的话,可以通过命令控制符来查看

进入cmd后依次键入

python
import sys
sys.path

【解决】 Visual Studio 2019 调用Python文件_第6张图片

就得到了当前电脑安装python的相关路径信息,你的include路径和库路径就在这个文件下。直接复制到文件资源管理器地址栏,记得把双反斜杠换成单反斜杠。

  1. 可能有点多余,但是在属性页的下面 C/C++目录下的常规一栏,也有个附加包含目录;在链接器选项下的常规一栏,也有个附加库目录。为了万无一失,这两处我也分别加上了刚才的python的include目录路径和libs目录路径

【解决】 Visual Studio 2019 调用Python文件_第7张图片

【解决】 Visual Studio 2019 调用Python文件_第8张图片

visual配置完了

尝试着引用一下头文件 Python.h 不报错的话,就差不多了。

【解决】 Visual Studio 2019 调用Python文件_第9张图片

尝试调用一下Python文件

#include
#include
#include

using namespace std;

void cpp2python() {
    
    Py_Initialize();
    PyRun_SimpleString("import plt_1;plt_1.plot()");
    Py_Finalize();
}

int main()
{
    cpp2python();
    system("pause");
    return 0;
}

简单调用一下一个现成的python绘图程序,功能是把一堆数据绘制成图。

py文件的结构为: 名为plt_1.py的文件,内有一个名为plot的函数。

Py_Initialize(); 用来初始化python,告诉解释器接下来会用到python文件了。

然后我这里出现了一个问题

【解决】 Visual Studio 2019 调用Python文件_第10张图片

发现PYTHONHOME 和 PYTHONPATH俩文件都没写进去。照着网上的帖子尝试过添加环境变量,但是始终没啥效果

image-20210724231713415

我的心情和这个老哥是一样的,根本不知道这俩是什么东西。。。

于是去查PYTHONHOME到底是什么东西,网上转载的帖子太多,太深奥的又看不懂,有用的信息总是很少。。。

【解决】 Visual Studio 2019 调用Python文件_第11张图片

原来PYTHONHOME就是安装目录。上图中这句让我感觉python还挺可怜的。

这个老哥说可以不用设,但是不行, 不设它就找不到,可能我装的python就是傻乎乎的找不到家吧。。。

最后还得是添加环境变量,不是在原有的Path里面添加,而是分别新建一个PYTHONHOME 和 PYTHONPATH俩环境变量。

【解决】 Visual Studio 2019 调用Python文件_第12张图片

其中PYTHONHOME 就填能指向你python.exe的路径,就是下图中那个框起来的部分。记得PATHHOME环境变量后面不要加分号

【解决】 Visual Studio 2019 调用Python文件_第13张图片

剩余箭头所指那一大片,全部填入PYTHONPATH,不同的路径之间加分号隔开,把双反斜杠换成单反斜杠杠。

这些路径是你python导入不同包的时候去寻找的路径,如果出现希望导入的包找不到又明明已经安装过的时候,检查一下包所在的路径是否被以上path覆盖了,如果没有,那么补充就好了。比如以下情况。通过pip show project_name指令,可以找到安装路径,导进PYTHONPATH就好了

【解决】 Visual Studio 2019 调用Python文件_第14张图片

修改完环境变量,切记切记,重启!重启!重启!

这非常重要,环境变量windows下据我所知是需要重启生效的,在linux下可以通过source等方式刷新生效。

一点小小的其他问题

当我已经确定所有的包都被包含了,尝试着调用一下我的py文件,仍然报错,原来是我的python文件所在的路径忘记包含了,于是再在PYTHONPATH追加一条,然后重启again…

这次倒是没有报什么路径找不到的问题

【解决】 Visual Studio 2019 调用Python文件_第15张图片

报了一屏幕的东西看似很吓人,核心是我在处理数据的时候调用了一个.csv文件,但是现在python处理器找不到了。

原来是因为之前的现成程序读取的时候用的是相对路径,现在py文件转移了,还想读取到那个文件,于是修改成绝对路径,即可。

【解决】 Visual Studio 2019 调用Python文件_第16张图片

终于大功告成。成功在vs中调用py文件!

今天还很凉快,可以睡个好觉了。

总结

说来说去,就是各种路径的问题。

然后是添加PYTHONHOME PYTHONPATH环境变量。

最后是如果py文件进行读写文件操作的时候,建议使用绝对路径替代,保证程序的稳定性。

当然最重要的是,安装python方法要正规! 我想如果大家的python都安装的规规矩矩的,就不会有这么多奇奇怪怪的问题了吧。。。

祝您愉快,有错误的地方欢迎各位大佬指正,一定虚心学习。

你可能感兴趣的:(瞎B操作,学习C++,visual,studio,python,c++)