python - venv 不尊重 --copies 参数
问题描述
我通过 ssh 进入开发环境(vagrant Ubuntu box),并且我的项目目录映射到另一个文件系统(通过 vbox),因此不支持符号链接。我正在尝试创建一个新的 venv,但 --copies 标志没有得到尊重。
$sudo python -m venv --copies venv
Error: [Errno 71] Protocol error: 'lib' -> '/home/vagrant/vagrant_projects/rurp/venv/lib64'
如果我使用 python 2.7 ($virtualenv venv --always-copy) 它可以工作,但不适用于 python3 venv --copies 实现。--always-copy 参数是解决 python2.x 类似问题的一种解决方法。
我在网上找不到任何表明 venv 错误的东西,我有点不知所措。其他人遇到过这个问题吗?
$ python -V
Python 3.6.9
先感谢您。
编辑:也在 python 3.8.1 中测试过。
解决方案
根据上面@chepner 的评论,在非 Windows 系统上似乎忽略了 --copies 参数(文档中没有提到这一点)。我能够通过在本地目录中创建 venv、手动将符号链接的 lib64 复制到真实目录、将 venv 移动到我的项目文件夹并手动更新激活脚本来解决这个问题。丑陋,但它的工作原理。
$cd ~
$python3 -m venv --copies --clear venv
$cp -r --remove-destination `readlink lib64` lib64
$cp -r venv vagrant_project/rurp/
我很乐意接受一个更优雅的答案。
推荐阅读
- java - 在谷歌分析中将身份验证迁移到 OAuth2.0 需要帮助
- django - 使用 django formview 显示 flash 消息
- c++ - 编译 #include 时出现致命错误
关于项目 [windows] - tensorflow - 为什么我们有用于 DeepLab 的 target_size 而 CNN 可以接受任何尺寸?
- javascript - 我是否必须等待 useEffect 中已经异步的异步函数?
- python - 如何解释这个损失值的 TensorBoard 图?
- vue.js - 如何使用 v-for 处理嵌套数组
- python - Skimage 合并过度分割的区域
- django - django外键修改时如何触发事件
- django - 如何根据相似的值将结果分组到数组中,Django Model/Serializers