折腾:
期间,得知Mac本地shell中,可以通过:pipenv run python testRestApi.py
去是可以正常运行pipenv的虚拟环境中的python3的代码的。
所以此处再去把这个配置到PyCharm中,希望可以实现在PyCharm中正常调试pipenv虚拟环境中的python3的文件。
结果用配置:
去运行出错:
/Users/crifan/.virtualenvs/robotDemo-HXjMJQEQ/bin/python /Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py --multiproc --qt-support=auto --client 127.0.0.1 --port 58605 --file "pipenv run python testRestApi.py"
pydev debugger: process 80603 is connecting
Connected to pydev debugger (build 173.4127.16)
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1668, in <module>
main()
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1662, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1072, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 11, in execfile
stream = tokenize.open(file) # @UndefinedVariable
File "/Users/crifan/.virtualenvs/robotDemo-HXjMJQEQ/lib/python3.6/tokenize.py", line 452, in open
buffer = _builtin_open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: 'pipenv run python testRestApi.py'
找了找配置,感觉是自己忘了配置工作目录working directory:
所以去加上working directory为当前pipenv的项目的根目录:
Working directory: /Users/crifan/dev/dev_root/company/naturling/projects/robotDemo
结果问题依旧:
还是找不到文件。
看到代码前面有提示:
所以点击看看
是可以进入调试的:
也是能正常输出的:
然后去测试api也是OK的:
点击测试,执行到断点了:
然后可以正常输出的:
对比系统生成的debug:
和自己添加的debug:
主要就是script path不一样
其是:/Users/crifan/dev/dev_root/company/naturling/projects/robotDemo/testRestApi.py
自己是:pipenv run python testRestApi.py
但是自己的,在加了working directory后,也不应该错啊
把自己的解析器换成 project default的那个(虽然感觉没啥区别)
参考:
中的:
才想起来:
原来PyCharm的debug的配置中的script path,就是要输入对应的python脚本文件
然后在Parameters中,输入必要的参数
-》而此处,感觉应该是:
输入pipenv这个,如果是python的话的,的脚本的路径,最好是绝对路径
然后加上参数,或许是:run python testRestApi.py
去找找,是否有pipenv这个python文件➜ robotDemo which pipenv
/Users/crifan/Library/Python/3.6/bin/pipenv
➜ robotDemo ls -lha /Users/crifan/Library/Python/3.6/
total 0
drwx------ 4 crifan staff 128B 4 17 11:06 .
drwx------ 4 crifan staff 128B 4 17 11:06 ..
drwxr-xr-x 7 crifan staff 224B 4 17 14:35 bin
drwx------ 3 crifan staff 96B 4 17 11:06 lib
➜ robotDemo ls -lha /Users/crifan/Library/Python/3.6/bin/
total 40
drwxr-xr-x 7 crifan staff 224B 4 17 14:35 .
drwx------ 4 crifan staff 128B 4 17 11:06 ..
-rwxr-xr-x 1 crifan staff 242B 4 17 14:35 pewtwo
-rwxr-xr-x 1 crifan staff 226B 4 17 14:35 pipenv
-rwxr-xr-x 1 crifan staff 237B 4 17 14:35 pipenv-resolver
-rwxr-xr-x 1 crifan staff 232B 4 17 11:06 virtualenv
-rwxr-xr-x 1 crifan staff 237B 4 17 11:06 virtualenv-clone
➜ robotDemo cat /Users/crifan/Library/Python/3.6/bin/pipenv
#!/usr/local/opt/python/bin/python3.6
# -*- coding: utf-8 -*-
import re
import sys
from pipenv import cli
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(cli())
好像这个pipenv还真是一个python文件呢。
而另外,感觉是:
此处由于PyCharm已经使用了此处的虚拟环境中的python解析器了,已同时识别了相关的库,所以貌似也不需要再去加上pipenv run python
去运行这个处于(pipenv创建的)虚拟环境中的py文件了。
所以,上述(点击运行按钮,选择Debug xxx)用PyCharm自带的debug,就可以正常运行此处的python文件了
-》否则会报错,找不到Flask才对的(本身Mac的默认的python2.7的环境中并没有安装Flask)
-》而这个默认的debug配置也已经足够用了。
所以去试试pipenv作为文件,然后加上参数:
结果是:
找不到pipenv:
FileNotFoundError: [Errno 2] No such file or directory: ‘pipenv’
加上pipenv的完整路径后:
结果:/Users/crifan/.virtualenvs/robotDemo-HXjMJQEQ/bin/python /Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py --multiproc --qt-support=auto --client 127.0.0.1 --port 62489 --file /Users/crifan/Library/Python/3.6/bin/pipenv run python testRestApi.py
pydev debugger: process 80863 is connecting
Connected to pydev debugger (build 173.4127.16)
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1668, in <module>
main()
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1662, in main
globals = debugger.run(setup['file'], None, None, is_module)
File "/Applications/PyCharm.app/Contents/helpers/pydev/pydevd.py", line 1072, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/Users/crifan/Library/Python/3.6/bin/pipenv", line 7, in <module>
from pipenv import cli
ModuleNotFoundError: No module named 'pipenv'
pycharm from pipenv import cli ModuleNotFoundError No module named pipenv
此处解析器是没有问题的:
pycharm debug ModuleNotFoundError No module named pipenv
pycharm ModuleNotFoundError No module named pipenv
没有解决此处问题,顺带看看:
以及:
好像设置中的
有点关系,或者是一样?
有空再去操心
而此处之所以找不到pipenv的模块,估计就是别人说的:
此处已经在pipenv创建的虚拟环境中了,而此虚拟环境中所安装的模块,现在只有:➜ robotDemo pipenv graph
Flask==0.12.2
- click [required: >=2.0, installed: 6.7]
- itsdangerous [required: >=0.21, installed: 0.24]
- Jinja2 [required: >=2.4, installed: 2.10]
- MarkupSafe [required: >=0.23, installed: 1.0]
- Werkzeug [required: >=0.7, installed: 0.14.1]
而且也可以从PyCharm中看到:
此处是没有,所谓的pipenv的模块的
-》导致pycharm的cli命令行去导入pipenv,无法导入。
再加上,之前提到的,pycharm自带创建的调试配置,其中的脚本就是此处的py文件
而无需pipenv的命令去运行,因为本身已经在虚拟环境中了。
所以可以正常运行,正常调试。
【总结】
最终是:
放弃这种自己加pipenv去运行的方式。因为本身不可行:
对于pycharm来说,在这个pipenv创建的虚拟环境中,本身不存在所谓的pipenv的模块
采用:
直接设置py文件的方式:
可以正常调试: