【问题标题】:Install dependencies only in virtualenv仅在 virtualenv 中安装依赖项
【发布时间】:2018-01-21 17:47:39
【问题描述】:

我需要在 virtualenv 中冻结我的依赖项。在 virtualenv 中,我有烧瓶 Web 应用程序的要求列表应该是这样的:

Flask==0.10.1
Jinja2==2.7.3
Werkzeug==0.9.6
html5lib==0.999
itsdangerous==0.24
mote==0.0.3
ndg-httpsclient==0.3.2
pyasn1==0.1.7
requests==2.4.3
twython==3.1.2
urllib3==1.9.1
virtualenv==15.1.0
wheel==0.24.0
wsgiref==0.1.2

但是当我尝试通过以下方式冻结它时:

source venv/bin/activate
sudo sh -c 'sudo pip freeze > require.txt' # baceuse after simple  sudo pip freeze > requir.txt I am getting this error -bash: requir.txt: Permission denied

我得到了这份清单:

Cap1xxx==0.1.3
ExplorerHAT==0.4.2
Flask==0.10.1
Flask-Email==1.4.4
Flask-Login==0.4.1
Flask-Mail==0.9.1
Jinja2==2.7.3
MarkupSafe==0.23
MySQL-python==1.2.3
Pillow==2.6.1
RPi.GPIO==0.6.3
RTIMULib==7.2.1
Werkzeug==0.9.6
argparse==1.2.1
automationhat==0.0.4
blinker==1.3
blinkt==0.1.0
certifi==2018.1.18
chardet==3.0.4
colorama==0.3.2
dropbox==8.6.0
drumhat==0.0.5
envirophat==0.0.6
fourletterphat==0.0.2
gpiozero==1.4.0
html5lib==0.999
idna==2.6
itsdangerous==0.24
lxkeymap==0.1
mcpi==0.1.1
microdotphat==0.1.3
mote==0.0.3
motephat==0.0.2
ndg-httpsclient==0.3.2
numpy==1.8.2
phatbeat==0.0.2
pianohat==0.0.5
picamera==1.13
picraft==1.0
pifacecommon==4.2.1
pifacedigitalio==3.1.0
piglow==1.2.4
pigpio==1.35
pyOpenSSL==0.13.1
pyasn1==0.1.7
pygame==1.9.2a0
pygobject==3.14.0
pyinotify==0.9.4
pyserial==2.6
python-apt==0.9.3.12
rainbowhat==0.0.2
requests==2.18.4
scrollphat==0.0.7
scrollphathd==1.0.1
sense-emu==1.0
sense-hat==2.2.0
six==1.8.0
skywriter==0.0.7
smbus==1.1
sn3218==1.2.7
spidev==3.0
touchphat==0.0.1
twython==3.1.2
urllib3==1.22
virtualenv==15.1.0
wheel==0.24.0
wsgiref==0.1.2

如您所见,其中包含所有已安装的软件包,其中许多未连接到我的烧瓶 Web 应用程序,例如 numpy==1.8.2RPi.GPIO==0.6.3,尽管事实上我是在 virtualenv 内部进行的。

那么,有没有办法获取仅与我的烧瓶应用程序捆绑在一起的依赖项列表?

谢谢!

【问题讨论】:

  • 您不能将sudo 与 virtualenvs 一起使用(无论如何都不需要它)
  • 使用 sh 命令启动一个新的 shell,它根本不知道之前的 activate 命令。
  • 阿奇!这才是重点!谢谢!如果我收到“权限错误”,该如何处理?
  • 使用 sh 命令启动一个新的 shell(原来的子进程),它根本不知道前面的 activate 命令。为什么不更改 require.txt 文件(chown 或 chmod)的所有者或权限?

标签: python pip


【解决方案1】:

正如大家在 cmets 中所说的那样

pip freeze > requirements.txt

virtualenv 不需要sudo

【讨论】:

  • 在这种情况下,我收到一个错误:-bash: 权限被拒绝。更改 .txt 文件的权限并执行此命令后,整个文件为空
  • 你不需要sh -c
  • 是的,我明白了。 “这个命令”是指你的命令:pip freeze > requirements.txt
  • pip 是否为 root 所有?您可能需要更改权限
  • 嗯..实际上我是用root安装了所有的包..也许
【解决方案2】:

您可以更改文件的权限

 chmod 664 require.txt

并将文件的所有者更改为您的所有者

 chown myusername require.txt

(如果不知道用户名,可以用命令询问

 whoami

但通常它在命令提示符中。)

【讨论】:

  • 是的,之后文件require.txt为空
猜你喜欢
  • 2014-02-01
  • 2014-10-02
  • 2011-01-20
  • 1970-01-01
  • 2020-12-28
  • 2021-06-19
  • 1970-01-01
  • 2016-08-21
  • 2021-10-15
相关资源
最近更新 更多