Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG]: venv虚拟环境指向python链接丢失 #290

Open
ieayoio opened this issue May 24, 2024 · 12 comments
Open

[BUG]: venv虚拟环境指向python链接丢失 #290

ieayoio opened this issue May 24, 2024 · 12 comments
Labels
bug Something isn't working

Comments

@ieayoio
Copy link

ieayoio commented May 24, 2024

Version
vfox version 0.5.3
OS
Windows:wsl ubuntu22.04

Describe the bug
在wsl重启后,创建虚拟环境venv里指向的python链接丢失,有什么好的解决办法没

使用项目级作用域,创建venv虚拟环境,过程如下:

➜  test vfox use -p python
Please select a version of python:
  -> 3.10.14
Now using [email protected].
➜  test python -m venv venv
➜  test ll venv/bin/python
lrwxrwxrwx 1 ieayoio ieayoio 66  5月 24 09:54 venv/bin/python -> /home/ieayoio/.version-fox/temp/1716480000-15160/python/bin/python

关闭wsl再次启动后venv中指向python环境丢失

➜  test ll venv/bin/python
lrwxrwxrwx 1 ieayoio ieayoio 66  5月 24 09:54 venv/bin/python -> /home/ieayoio/.version-fox/temp/1716480000-15160/python/bin/python
➜  test ll /home/ieayoio/.version-fox/temp/1716480000-15160/python/bin/python
ls: 无法访问 '/home/ieayoio/.version-fox/temp/1716480000-15160/python/bin/python': 没有那个文件或目录

Screenshots[optional]
image

@ieayoio ieayoio added the bug Something isn't working label May 24, 2024
@aooohan
Copy link
Member

aooohan commented May 24, 2024

因为每个shell有固定的路径, shell关闭, 这个地址就失效了.

目前的话, 你只能通过-g切换版本之后, 在用venv创建虚拟环境. 因为全局的路径是固定的

@mikeshi80
Copy link

我测试下来,即使是global的,每次登录也会在~/.version-fox/temp/下创建一个新的啊

@ieayoio
Copy link
Author

ieayoio commented May 24, 2024

因为每个shell有固定的路径, shell关闭, 这个地址就失效了.

目前的话, 你只能通过-g切换版本之后, 在用venv创建虚拟环境. 因为全局的路径是固定的

我验证了一下,当前即使使用全局,venv生成的也是temp的链接
image

@aooohan
Copy link
Member

aooohan commented May 24, 2024

目前的话, 你只能通过-g切换版本之后, 在用venv创建虚拟环境. 因为全局的路径是固定的

这个说错了, 我忘了激活的时候也是配置的临时目录了.

有一个解决方案是放到vfox-python中去解决, 在切换的时候, 可以主动去修复一下venv生成的符号连接的指向.

本身venv和vfox就是有点矛盾的. 如果是0.4.x版本应该没有问题, 因为采用的是直接刷新PATH(绝对路径). 但是这个方案作为通用版本管理器, 不合适,问题有点多. 目前没有想到更好的办法, 上面提到的倒是行得通.

@jan-bar
Copy link
Contributor

jan-bar commented May 24, 2024

vfox use -p python 这个是项目级别,能否不使用临时目录的目录链接,而使用当前项目所在目录创建目录链接。这样每次进入项目,并使用项目级别指定版本后该目录路径永远不会改变。

@ieayoio
Copy link
Author

ieayoio commented May 24, 2024

目前的话, 你只能通过-g切换版本之后, 在用venv创建虚拟环境. 因为全局的路径是固定的

这个说错了, 我忘了激活的时候也是配置的临时目录了.

有一个解决方案是放到vfox-python中去解决, 在切换的时候, 可以主动去修复一下venv生成的符号连接的指向.

本身venv和vfox就是有点矛盾的. 如果是0.4.x版本应该没有问题, 因为采用的是直接刷新PATH(绝对路径). 但是这个方案作为通用版本管理器, 不合适,问题有点多. 目前没有想到更好的办法, 上面提到的倒是行得通.

我也是这么想,不行就手动修复了一下venv生成的符号链接

@ieayoio
Copy link
Author

ieayoio commented May 24, 2024

vfox use -p python 这个是项目级别,能否不使用临时目录的目录链接,而使用当前项目所在目录创建目录链接。这样每次进入项目,并使用项目级别指定版本后该目录路径永远不会改变。

从逻辑上说我认为应该是这样的效果,我想着有种解决方案就是使用目录的绝对路径作为编码生成临时目录,目录已经存在就不再使用新的临时目录,这样即使每次都生成新的临时路径,也保持一致,我认为这样也能接受

@aooohan
Copy link
Member

aooohan commented May 24, 2024

vfox use -p python 这个是项目级别,能否不使用临时目录的目录链接,而使用当前项目所在目录创建目录链接。这样每次进入项目,并使用项目级别指定版本后该目录路径永远不会改变。

从逻辑上说我认为应该是这样的效果,我想着有种解决方案就是使用目录的绝对路径作为编码生成临时目录,目录已经存在就不再使用新的临时目录,这样即使每次都生成新的临时路径,也保持一致,我认为这样也能接受

这个方案可行, 而且也更通用. 可以作为增强方案记录一下.

@mikeshi80
Copy link

既然是项目相关的,就应该在项目下生成相应的目录,没有的时候生成,有的话就复用,比如.version_fox.env目录下。这样就固定下来了。当然还可以在目录下生成一个配置文件,记录它的环境在哪里,而这个目录不会自动清空,也是ok的,这样就可以保证所有的环境都集中在某个地方生成。

而Global为什么也是每次生成一个临时目录就更让我不解了,感觉session的话每次生成一个临时目录才比较合理。

@aooohan
Copy link
Member

aooohan commented May 28, 2024

而Global为什么也是每次生成一个临时目录就更让我不解了,感觉session的话每次生成一个临时目录才比较合理。

Global每次也会生成全局的current符号连接. 只是为了方便, 在shell激活的时候, 只配置了临时目录的符号链接到PATH里, 因为不管是Global、Session、Project, 都只是呢一个符号链接来回变而已. 当时并没有考虑venv这种情况.

@abceleung
Copy link

abceleung commented Aug 29, 2024

抱歉挖坟,但想问一下这个有workaround吗?
我用Poetry时Poetry找不到$HOME\.version-fox\temp\<乱数>\python\python.exe(因为<乱数>文件夹已经不存在了),我现在只能透过重装Poetry解决

@just-test-code
Copy link

just-test-code commented Sep 4, 2024

windows下使用cmd 运行poetry shell 然后执行pip 也是同样的问题, 但是切换为powershell就没问题了,还是得修一下吧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

6 participants