移动 python 项目文件夹位置后如何解决 PyCharm 找不到解释器与无法正常使用终端的问题
背景¶
因为项目需要,将部分 python 项目移动到了其他文件夹,导致在 PyCharm 中找不到解释器,也无法正常使用终端。
现象¶
我使用的 IDE 是 PyCharm 专业版 2021.3.2
,具体表现为在 IDE 内打开终端后:
- PyCharm 找不到解释器
- 终端内执行 python 程序只能够使用全局包
- 无法进入 venv 环境(包括 PyCharm 自动进入和手动进入)
- 无法使用 pip
解决¶
-
找不到解释器¶
这个问题好解决,PyCharm 会自动检测当前目录下的 venv 文件夹,如果存在,则会将 venv/Scripts/python
设置为解释器。问题直接解决。
需要注意的是,因为我们是移动了 python 项目文件夹的,因此原来的解释器路径还保留在 PyCharm 内,所以需要手动将其删除。可以按照以下步骤进行操作:
找到 文件
-> 设置
-> 项目
-> Python 解释器
选择当前解释器右边的齿轮图标,点击 全部显示
,找到红色标记的解释器,点击删除即可。
-
终端只能够使用全局包与无法进入 venv 环境¶
具体有以下几个表现:
-
自己的实际项目中有第三方库(例如
aiohttp
),项目文件直接右键运行可以正常执行,但是在终端里面执行时会报错,提示ModuleNotFoundError: No module named 'aiohttp'
。 -
终端里直接执行
where python
显示的是全局 python 路径,而不是 venv 中的路径。 -
终端里直接执行
pip list
会提示只有pip
和setuptools
两个包,而我们项目里依赖的包一个都没有。
原因在于 PyCharm 自动进入 venv 环境的时候是从 venv/Scripts/activate.bat
进入的,这个文件定义了 %PATH%
,当我们已经移动了项目文件夹后,activate.bat
里记录的路径并没有改,而原来的路径已经不存在了,所以我们放在 venv
下的 python.exe
并不会自动进入到 %PATH%
中。
解决方式很简单,直接编辑 venv/Scripts/activate.bat
文件,linux 同理。
activate.bat | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
activate | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
|
activate.fish | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
|
activate.xsh | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
|
-
无法使用 pip¶
通过修改 activate.bat
使得能正常进入 venv 环境后,会迎来第三个问题,就是无法使用 pip 安装包。
具体表现为,使用 pip
命令后,终端会报错:Fatal error in launcher: unable to create process using: 'XXXXXXX/python.exe' 'XXXXXXXXX/pip.exe'
。
我一看,这个所谓的 'XXXXXXX/python.exe'
正是我们在移动项目文件之前的 venv 的 python 路径,可是我们已经修改了 activate.bat
中的路径,怎么还是会出现这个问题呢。
参考了 Fatal error in launcher: Unable to create process using 这篇文章,了解到 pip.exe
同样也保存了路径,而且就保存在 pip.exe
这个二进制文件里,如果想要修改也不是不行,用 WinHex
这类工具改就行。
但是我们没必要这么麻烦,我的建议是直接原地重装 pip
,步骤如下:
-
首先有了上一步的铺垫,我们已经能够进入 venv,那么进入 venv
I:\Developer\web\blog_mkdocs\venv\Scripts\activate.bat
-
然后重装
pip
(注意此时你已经在 venv 里了)python -m pip install --upgrade --force-reinstall pip
此时,该 venv 里的 pip
应该可以正常使用。
同理,继续检查 venv/Scripts
下的其他二进制文件,例如 mkdocs.exe
,这些都要通过相同方式重装才能正常用。
pip install --upgrade --force-reinstall mkdocs
创建日期: 2022-04-06 09:51:16