我是Python的绝对初学者(我来自Java),我对我的项目中的venv文件夹有以下疑问。
所以基本上我有这个项目结构:
如你所见,它包含venv文件夹。阅读Python官方留档:https://docs.python.org/3/library/venv.html
我可以阅读:
venv模块支持创建具有自己站点目录的轻量级“虚拟环境”,可以选择与系统站点目录隔离。每个虚拟环境都有自己的Python二进制文件(与用于创建此环境的二进制文件版本相匹配),并且可以在其站点目录中有自己独立的一组已安装的Pythin包。
根据我的理解,这意味着,使用venv,每个项目都有自己的venv文件夹,其中包含:
>
bin 文件夹:它包含 Python 解释器二进制文件(在此特定情况下为 Python 3.7)。
lib文件夹:包含了我已经安装的依赖,使用pip3(事实上,我安装sc
这是因为我的PyCharm IDE设置为使用Python 3.7
如果这个推理是正确的(我不确定),这意味着当我运行类似的东西时:
python3 packet_sniffer.py
packet_niffer。py脚本(包含在上一个项目中)将使用Python3 byary和venv文件夹中的依赖项运行。正确吗?
如果我的推理是正确的,我有以下疑问:
当我使用Python 2运行它时会发生什么
python packet_sniffer.py
我想它不再使用嵌入到我项目的venv文件夹中的Python 3版本。我使用的是什么依赖关系?它从哪里来?
正如您可以看到的,我使用的是Python2版本:
root@kali:~# python --version
Python 2.7.17
root@kali:~# python3 --version
Python 3.7.5
如果您激活了虚拟环境,那么您所说的关于执行python3
的一切都是正确的。然而,所有其他命令仍然可用,并将从它们所在的任何位置运行,假设它们可以被shell找到。因此,您的python
命令可能正在运行系统级安装的python版本。
如果你想知道这个python
解释器的确切运行位置:
python
>>> import sys
>>> print(sys.executable)
C:\Python27\python.exe
venv文件夹是安装python虚拟环境的建议标准。要使用虚拟环境,必须首先激活它。
注意:在安装应用程序所需的任何软件包之前激活您的python虚拟环境。
从您的命令行执行:
source venv/bin/activate
python packet_sniffer.py
注意:您不需要指定python的特定版本,因为它默认为用于创建虚拟环境的版本。
PyCharm可以配置为利用python虚拟环境
https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html
如果您创建了一个虚拟环境,然后将其激活,那么如果您调用其中任何一个:python foo,则安装在该虚拟环境中的python解释器将运行。py/python3 foo.py。调用python foo之间没有区别。py或python3 foo。py(当然,如果您安装了python3)。
lib 文件夹将包含您在此虚拟环境中通过 pip 安装的关联依赖项,当您通过此虚拟环境使用 python 解释器时,您将使用上述依赖项
根据我的理解,这意味着,使用venv,每个项目都有自己的venv文件夹,其中包含:
> < Li > < p > bin文件夹:它包含Python解释器二进制文件(在此特定情况下为Python 3.7)。
lib文件夹:包含了我已经安装的依赖,使用pip3(事实上,我安装sc
使用 venv 每个项目都有自己的虚拟环境文件夹,您可以命名任何您想要的名称,包含 是的 bin 文件夹和 lib 文件夹。
我正在使用maven shade插件创建一个胖罐子,其中也包括一些弹性城堡罐子。但这造成了问题,因为Bouncy Castle的未签名版本。
问题内容: 我注意到Node.js项目通常包含以下文件夹: / libs,/ vendor,/ support,/ spec,/ tests 这些到底是什么意思?它们之间有什么区别,我应该在哪里包含引用的代码? 问题答案: 关于您提到的文件夹: 通常用于自定义 或 包含第三方库(使用git作为源代码管理时添加为git子模块) 包含BDD测试规范。 包含应用程序的单元测试(使用测试框架,请参见 此处
我工作的地方使用Maven,我们有很多内部库。我们尝试以向后兼容的方式进行更改,但有时我们的一个库需要另一个库的较新版本。如果最终产品没有加入较新的库版本,这可能会导致问题。 由于我们有很多库,如果最终产品使用了库A、B和C,而A和B都使用了不同版本的C,那么并不总是使用最新版本的C。从介绍到依赖机制: 依赖项中介--这确定当遇到工件的多个版本时,将使用依赖项的哪个版本。目前,Maven2.0只支
有一个web版本的项目,上面有一个“文件下载”的功能,项目需要客户下这个下载就需要把文件下载到特定的文件夹,这个文件夹被其它设备一直监听,有文件就自动打印,但是因为是web项目,怎么可以实现用户点击按钮后文件直接下载到特定位置呢?
我在我的项目中使用了Maven和几个库,其中一些嵌套在最后的JAR文件中。 提前谢了。
我们看一下全局的文件结构: ▸ build/ // 编译用到的脚本 ▸ config/ // 各种配置 ▸ dist/ // 打包后的文件夹 ▸ node_modules/ // node第三方包 ▸ src/ // 源代码 ▸ static/