如何正确配置 vscode Python

2021-08-30 19:00:47 +08:00
 CamD

我在使用 vscode 过程中老是遇到无法导入自己写的包的情况,搜索后发现是设置 pythonpath 这个环境变量,但看来看去还是一头雾水,而且如果真是 pythonpath 这个环境变量在起作用,岂不是每开一个项目都需要配置一遍,想问问各位有没有一劳永逸的方法,谢谢各位

3728 次点击
所在节点    Python
20 条回复
RRRoger
2021-08-30 19:07:43 +08:00
cmd + shift + p 调出命令窗口

然后输入 `select interpreter`
CamD
2021-08-30 19:32:21 +08:00
@RRRoger 这个我知道,也正确选择了
chenqh
2021-08-30 19:48:06 +08:00
写到全局的环境变量里面?
chenqh
2021-08-30 19:48:52 +08:00
1. 你应该写道 windows 的环境变量里面呀, 这种情况下你的包是本地包
2. 打包到 pypi 上面去
v2byy
2021-08-30 19:50:46 +08:00
windows 本地还是 pycharm 吧,否则就 wsl
jaredyam
2021-08-30 19:53:23 +08:00
什么鬼,$PYTHONPATH 和 vs code 有什么关系?
一劳永逸的方法:在你的 shell 配置中添加 export PYTHONPATH=/path/to/your/package

如果是你自己写的包,且不在当前开发项目文件中,设置$PYTHONPATH 为你的包路径可以帮助 Python 包导入系统识别到你的包位置,如果
1 )长期依赖这个包进行开发;
2 )没有发布和写 setup 的打算;
3 )希望退出当前项目目录时自动 unset 包路径
你可以看下 direnv 这个 utility
jaredyam
2021-08-30 19:59:33 +08:00
如果你不清楚$PYTHONPATH 是什么:

1 )它是系统路径环境变量,可通过在 shell 中 echo $PYTHONPATH 进行查看
2 )一般情况下$PYTHONPATH 是 unset 的,也即 echo 的值为空,在这一设置下 which python 只能导入 which pip 和当前工作目录下的所有包,具体默认路径可通过 sys.path 还是啥的查看(不重要)
3 )设置$PYTHONPATH 相当于添加了 custom 的包导入路径,也就是你当前的需求,因此你看到的解决方案没有问题,是你的执行方式和理解有问题
4 )还有一种添加$PYTHONPATH 的方式是通过 python 代码添加包路径,可能的使用场景你可自行体会,反正都是些比较 hardcode 的做法,做好看是看看能不能直接把外部包放到当前工作目录,或者进行发布
chaleaoch
2021-08-30 20:57:08 +08:00
无法导入是什么意思?
自动提示吗?
自动跳转吗?

是否导入和 vscode 没关系 vscode 就是个编辑器.
imn1
2021-08-30 22:33:52 +08:00
先按#1 设好,重点是设 workspace 的解析器
然后 save workspace as...
关闭 workspace,再重新打开刚才保存的,基本就可以了,以后也不用重新设置(其他的 workspace setting 改动都会自动存在这个文件,无需手动处理)

一般出现 vscode 提示找不到包(明明装好的,运行没问题),多数是环境冲突,例如多个版本、多个环境
或者
代码在不同的机器同步,各自的解析器路径不同,如果 workspace 的配置也同步了,造成其中一台找不到解析器
所以上述保存的 code-workspace 注意要每台机器独立,不应同步,各自打开

如果自写的包想在不同项目使用,又没有安装,可以简单写个文本文件,把包的路径写进去,保存为.pth 扩展名,名字随意且不和其他包冲突,扔到 site-package 目录就行了
l4ever
2021-08-31 08:54:56 +08:00
正确的姿势是使用虚拟环境, 创建项目目录之后
cd d:\project
python -m venv .venv
code.exe #打开 vscode 之后底部左侧点击选择解释器->选择项目内的.venv\scripts\python.exe
下次打开 vscode 会自动激活虚拟环境, 或者手动 ctrl+tab+~
zachlhb
2021-08-31 08:58:54 +08:00
vscode 自动导包要装插件的
andy2415
2021-08-31 09:25:34 +08:00
Python › Analysis: Extra Paths
jeeyong
2021-08-31 09:48:04 +08:00
打开 VS Code -> 文件 -> 首选项 -> 设置[或者快捷键 Ctrl + ,] -> 搜索 env -> 在左侧导航条里选择 python 环境.

有个 python Env File 选项. 默认应该是: ${workspaceFolder}/.env
改成你经常创建虚拟环境的目录名, 比如我是 envs
或者你用默认的也没问题, 即.env

然后你每次打开项目文件, vscode 会自动识别这个目录, 并使用这个目录下的虚拟环境.
ipwx
2021-08-31 09:53:34 +08:00
楼主你先说清楚是当前项目的包无法导入还是别的项目的包无法导入。

姑且认为是后者,后者是需要配置的。两条路:

1. 用标准的 python 包结构,写 setup.py ,这样你自己的包就能 pip install . 安装了。
2. 把你自己的包扔到一个统一的地方,然后把那个路径加 PYTHONPATH 。
xingheng
2021-08-31 12:52:14 +08:00
一直是 pyenv,很少碰到过 import 失败或者提示不存在的情况。也可以试试 pipenv
frostming
2021-09-03 10:10:45 +08:00
这跟用什么 IDE 用什么环境用什么包管理没一点关系,这是没搞清楚 Python 找包的逻辑,以及不同运行方式对 sys.path 的影响

看这里 https://frostming.com/2019/03-13/where-do-your-packages-go/#%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%E6%96%B9%E5%BC%8F%E5%AF%B9%E6%90%9C%E7%B4%A2%E8%B7%AF%E5%BE%84%E7%9A%84%E5%BD%B1%E5%93%8D
CamD
2021-09-03 12:19:25 +08:00
@frostming 多谢
chenqh
2021-09-04 13:49:24 +08:00
你这种使用.env 文件
在项目下面新建一个`.env` 文件
```
PYTHONPATH=.
```
song135711
2021-09-08 12:44:37 +08:00
zanelee
2021-09-16 11:46:31 +08:00
这个 pycharm 会自动导入当前工程内的包的。之前 windows 上的工程放到 linux 也会报这种错,然后干脆就把要导入的包放到了 python 目录下的 site-package 里面了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/798907

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX