python中filenotfounderror_【已解决】PyCharm中调试pipenv虚拟环境中文件出错:FileNotFoundError Errno 2 No such file or di...

本文记录了解决PyCharm在调试pipenv虚拟环境时遇到的FileNotFoundError问题。通过尝试配置不同的工作目录和脚本路径,发现错误在于使用pipenv作为脚本,并尝试在已激活的pipenv环境中寻找pipenv模块。最终解决方案是直接设置要调试的py文件,避免使用pipenv命令。
摘要由CSDN通过智能技术生成

折腾:

期间,得知Mac本地shell中,可以通过:pipenv run python testRestApi.py

去是可以正常运行pipenv的虚拟环境中的python3的代码的。

所以此处再去把这个配置到PyCharm中,希望可以实现在PyCharm中正常调试pipenv虚拟环境中的python3的文件。

结果用配置:

d68c189a9135cc0d1321156f4ee3999a.png

去运行出错:

a98012c13a8fb3abd11a8cf156195e96.png/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:

79eb6de104bdb3905869fcc369a2ac93.png

所以去加上working directory为当前pipenv的项目的根目录:

5ad06ea1658ae005c1bef8875fca0537.png

Working directory: /Users/crifan/dev/dev_root/company/naturling/projects/robotDemo

结果问题依旧:

a36cbbb54ca0efbfe75541e989a62448.png

还是找不到文件。

看到代码前面有提示:

965c9ecf7e42bfb48907f2695971c326.png

所以点击看看

544ae6c72846804f2b114f8be6ffae36.png

是可以进入调试的:

09d1f50aecfe9ba5e998a27e148d71d2.png

976dbb36d2a1fd1a65d1493b69376ec7.png

也是能正常输出的:

73f7a8df2aec76ad1b480568175fa61a.png

然后去测试api也是OK的:

点击测试,执行到断点了:

6769f0268c380ad0ef7e305823a523e8.png

然后可以正常输出的:

bf7a2c2a2745e401bb9b90614d834624.png

对比系统生成的debug:

8a0d83a69fc60e6b978cc064d2a1bbfe.png

和自己添加的debug:

7244b7697578e25f5f64dada69ed8724.png

主要就是script path不一样

其是:/Users/crifan/dev/dev_root/company/naturling/projects/robotDemo/testRestApi.py

自己是:pipenv run python testRestApi.py

但是自己的,在加了working directory后,也不应该错啊

把自己的解析器换成 project default的那个(虽然感觉没啥区别)

09aea9b9a93454f24ed0a85169c1fc66.png

参考:

中的:

357bdc2385301c440f5ba0e466db88e6.png

才想起来:

原来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作为文件,然后加上参数:

01f806998c31d85f7a64f786fafe72fd.png

结果是:

f33719ac543b004fe21aa9d3db06d1a8.png

找不到pipenv:

FileNotFoundError: [Errno 2] No such file or directory: ‘pipenv’

加上pipenv的完整路径后:

c6ef12289fa696ba099b3b8e4364a050.png

结果:/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'

750e177c232aa5692741262cd635d914.png

pycharm from pipenv import cli ModuleNotFoundError No module named pipenv

此处解析器是没有问题的:

67962c4b6768e7791f790eae527d92ca.png

pycharm debug  ModuleNotFoundError No module named pipenv

pycharm    ModuleNotFoundError No module named pipenv

没有解决此处问题,顺带看看:

f7eb671727efce6a534fc0e79651384e.png

以及:

好像设置中的

65fd1fbd28ccf590457b65db9a699bfb.png

有点关系,或者是一样?

有空再去操心

而此处之所以找不到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中看到:

8a275bc5541a9583c31bc446275a0527.png

此处是没有,所谓的pipenv的模块的

-》导致pycharm的cli命令行去导入pipenv,无法导入。

再加上,之前提到的,pycharm自带创建的调试配置,其中的脚本就是此处的py文件

而无需pipenv的命令去运行,因为本身已经在虚拟环境中了。

所以可以正常运行,正常调试。

【总结】

最终是:

放弃这种自己加pipenv去运行的方式。因为本身不可行:

对于pycharm来说,在这个pipenv创建的虚拟环境中,本身不存在所谓的pipenv的模块

采用:

直接设置py文件的方式:

b7a0a0d5074b6494e1ff82c8dcc62f88.png

可以正常调试:

20b004c43224d8fd71a3b2641450e2ac.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值