gpt4 book ai didi

python-3.x - 如何使用 VS Code for Windows 在 WSL (Ubuntu) 中查找和激活虚拟环境

转载 作者:行者123 更新时间:2023-12-03 10:01:31 34 4
gpt4 key购买 nike

我有一台 Windows 机器,我正在尝试使用可以使用 Linux 的 WSL 来完成 Corey Schafer 关于 Django 开发的学习项目。 (一切都很好,直到我不得不使用 Gunicorn,根据我的阅读,它在 Linux 上效果最好)

我的学习项目在虚拟环境 (pipenv) 中,我的困难是如何通过 VS Code 中的 WSL 从我的 Ubuntu 发行版激活它。我找不到我的虚拟环境的路径。我试图将它添加到我的 .profile 上的 PATH 变量中,但它仍然没有“找到”它。我尝试使用 source <path to activate file> 手动激活它.它“激活”但在检查时它没有从虚拟环境运行 python 可执行文件。在 VS Code 中,系统提示我选择一个 python 解释器,但我的虚拟环境中的 python 可执行文件再次不在选项中。 Windows 和 Ubuntu 都运行 python 3.7.4。

Windows VS 代码终端(运行正确的 python 可执行文件)

(Corey Schafer - Django Framework) PS C:\Users\this_user\OneDrive - CUT\Learning\Python\Corey 
Schafer - Django Framework> python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 19:29:22) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.executable
'C:\\Users\\this_user\\.virtualenvs\\Corey_Schafer_-_Django_Framework-jrC3nBNH\\Scripts\\python.exe'

VS 代码终端上的 WSL (Ubuntu)(不是正确的 python 可执行文件。还显示我的 PATH 变量,其中添加了虚拟环境的路径)

    (Corey Schafer - Django Framework) this_user_name@this_PC:/mnt/c/Users/this_user/.virtualenvs/Corey_Schafer_-_Django_Framework-jrC3nBNH/Scripts$ python
Python 3.7.4 (default, Dec 27 2019, 13:49:49)
[GCC 7.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.executable
'/usr/local/bin/python3.7'
(Corey Schafer - Django Framework) this_user_name@this_PC:/mnt/c/Users/this_user/.virtualenvs/Corey_Schafer_-_Django_Framework-jrC3nBNH/Scripts$ echo $PATH
/C/Users/this_user/.virtualenvs/Corey_Schafer_-_Django_Framework-rC3nBNH/Scripts:
/mnt/c/Users/this_user/.virtualenvs:/home/this_user_name/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:
/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/PostgreSQL/12/bin:/mnt/c/Users/this_user/.virtualenvs:
/mnt/c/Users/this_user/.virtualenvs/Corey_Schafer_-_Django_Framework-rC3nBNH/Scripts:
/mnt/c/Users/this_user/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/this_user/AppData/Local/GitHubDesktop/bin:
/mnt/c/Users/this_user/AppData/Local/Programs/Python/Python37-32:/mnt/c/Users/this_user/AppData/Local/Programs/Python/Python37-32/Scripts:
/mnt/c/Users/this_user/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Program Files/heroku/bin:/snap/bin:
/mnt/c/Users/this_user/.virtualenvs/Corey_Schafer_-_Django_Framework-jrC3nBNH/Scripts$

我的工作区文件夹的 Settings.json 文件(我知道 pythonpath 是针对 Windows 目录的,但不确定在 Windows 和 Linux 上都可以识别它的内容。试图从 Linux 目录中输入正确的路径它仍然没有用)

    {
"python.pythonPath": "C:\\Users\\this_user\\.virtualenvs\\Corey_Schafer_-_Django_Framework-jrC3nBNH\\Scripts\\python.exe",
"python.autoComplete.extraPaths": [
"./django_project"
],
}

我的 .profile 文件

    # ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi


#Adding path to virtual enviroments
PATH="/mnt/c/Users/this_user/.virtualenvs:$PATH"
export PATH

从下图中,我的虚拟环境中的解释器不在要选择的选项中(在同一个 .virtualenv 文件夹中还有其他解释器,我在这里看不到但在 Windows 上可以看到)。我还收到一条警告,指出 pipfile 已被识别,但未找到 pipenv 激活的路径,这似乎又是路径问题(“”是因为我试图将路径放入“pipenv 路径”设置那时我把它留空了。)

Image of running WSL in VS Code with error messages

我是 Linux 的新手,也是 VS Code 的新手。感谢提供的任何帮助。

最佳答案

问题是因为我在 Ubuntu 上运行 64 位版本的 Python,而在 Windows 上运行 32 位版本的 Python 时不知不觉(可以在我上面的问题中注明)。通过在 Ubuntu 上创建虚拟环境 (venv) 并通过 pipenv run pip freeze > requirement.txt 生成的 requirements.txt 在 Windows 中安装与我的虚拟环境相同的包来解决此问题。 .

由于 python.exe 程序的不同体系结构,当我在 Windows 和 WSL Ubuntu 之间切换(据我所知)时,这 2 个环境不会相互检测,因此效果很好。很高兴我从中学到了一些东西!

关于python-3.x - 如何使用 VS Code for Windows 在 WSL (Ubuntu) 中查找和激活虚拟环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59527278/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com