很累了,直入主题。我想在visual Studio中调用一个python文件,完成绘图,数据统计处理等工作 (毕竟Python天天杀死Excel)。
不太懂Python,网上查了很多很多教程,有的有用,有的没用,这两天干了很多无用功,好在是最后成功了。记录一下踩坑过程。
如果您的python已经安装好并且成功进行过python代码调试的话,可以直接跳到vs环境的配置。
首先,建议一定要从官网下载安装包进行安装!!! 务必!!!
首先是Python的安装,我想如果按照网上的大部分教程来,通过官网下载Python安装包,按部就班的一步一步来,都不会有问题。
偏偏我有点问题,因为记不得电脑上以前有没有安装过Python,所以在命令提示符cmd里面输入了python
语句,想看看是否曾经安装过,如果安装过,版本是多少。然后它给我跳出了一个微软商店的python安装地址。我有点头铁,就一路安装下去了,悲剧发生。。。
首先是安装路径有点不对头,,不知道为什么这个路径这么长一串,这和我在网上看到的帖子一点都不一样。。
其次是,我想双击打开这个python.exe检查一下是否正常的时候,它给我报了个权限不足的错误。挺无语的,而且我也不能访问它的上层目录。告诉我权限不足。
然后我又发现了一个目录
在这个目录下,我是可以双击打开python.exe文件的,但是为什么这个文件夹里面所有的东西大小都显示为0?好像假的一样 (俺不懂,到现在也不懂,有大佬明白的请告诉我一下)
但是后面在vs中配置的时候,要让我添加python的库文件和libs路径,但是这个诡异的路径下没有这俩文件,所以只能想办法把上面那个看起来像真货的文件夹地权限修改了,把WindowsApps文件夹改成完全控制了。具体参考这个帖子修改
接下来进入正题,对visual studio 进行一点配置。
首先 我看到一个说法是,vs调用python,必须把解决方案配置修改成Release,这很重要,涉及到接下来的配置。
我尝试了很多种可能,这里贴出最万无一失的配置
包含目录下放的是python 的include路径,这个路径就是这俩文件夹的路径。把路径直接添加到后面,记得要用;分号隔开。
如果你是从官网安装的python,你的安装路径应该是一个非常简约的路径,一般是一个/Python3* /include 和/Python3* /libs
这样的,如果你不确定的话,可以通过命令控制符来查看
进入cmd后依次键入
python
import sys
sys.path
就得到了当前电脑安装python的相关路径信息,你的include路径和库路径就在这个文件下。直接复制到文件资源管理器地址栏,记得把双反斜杠换成单反斜杠。
visual配置完了
尝试着引用一下头文件 Python.h 不报错的话,就差不多了。
#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文件了。
然后我这里出现了一个问题
发现PYTHONHOME 和 PYTHONPATH俩文件都没写进去。照着网上的帖子尝试过添加环境变量,但是始终没啥效果
我的心情和这个老哥是一样的,根本不知道这俩是什么东西。。。
于是去查PYTHONHOME到底是什么东西,网上转载的帖子太多,太深奥的又看不懂,有用的信息总是很少。。。
原来PYTHONHOME就是安装目录。上图中这句让我感觉python还挺可怜的。
这个老哥说可以不用设,但是不行, 不设它就找不到,可能我装的python就是傻乎乎的找不到家吧。。。
最后还得是添加环境变量,不是在原有的Path里面添加,而是分别新建一个PYTHONHOME 和 PYTHONPATH俩环境变量。
其中PYTHONHOME 就填能指向你python.exe的路径,就是下图中那个框起来的部分。记得PATHHOME环境变量后面不要加分号
剩余箭头所指那一大片,全部填入PYTHONPATH,不同的路径之间加分号隔开,把双反斜杠换成单反斜杠杠。
这些路径是你python导入不同包的时候去寻找的路径,如果出现希望导入的包找不到又明明已经安装过的时候,检查一下包所在的路径是否被以上path覆盖了,如果没有,那么补充就好了。比如以下情况。通过pip show project_name
指令,可以找到安装路径,导进PYTHONPATH就好了
修改完环境变量,切记切记,重启!重启!重启!
这非常重要,环境变量windows下据我所知是需要重启生效的,在linux下可以通过source等方式刷新生效。
当我已经确定所有的包都被包含了,尝试着调用一下我的py文件,仍然报错,原来是我的python文件所在的路径忘记包含了,于是再在PYTHONPATH追加一条,然后重启again…
这次倒是没有报什么路径找不到的问题
报了一屏幕的东西看似很吓人,核心是我在处理数据的时候调用了一个.csv文件,但是现在python处理器找不到了。
原来是因为之前的现成程序读取的时候用的是相对路径,现在py文件转移了,还想读取到那个文件,于是修改成绝对路径,即可。
终于大功告成。成功在vs中调用py文件!
今天还很凉快,可以睡个好觉了。
说来说去,就是各种路径的问题。
然后是添加PYTHONHOME PYTHONPATH环境变量。
最后是如果py文件进行读写文件操作的时候,建议使用绝对路径替代,保证程序的稳定性。
当然最重要的是,安装python方法要正规! 我想如果大家的python都安装的规规矩矩的,就不会有这么多奇奇怪怪的问题了吧。。。
祝您愉快,有错误的地方欢迎各位大佬指正,一定虚心学习。