Python Pip 本地下载

尼尔曼达尔

所以我希望为我的项目在本地下载 Flask(和所有其他依赖项)。我使用以下代码执行此操作:

pip install -t lib Flask

这可以正常工作并执行。其结果保存在lib目录中。但是,当尝试从 导入 Flask 时lib.Flask,会出现此错误:

ModuleNotFoundError: No module named 'jinja2'

我知道 Flask 依赖于这个库,但它是用上面的命令和 Flask 一起安装的。换句话说,jinja2是在lib目录中。

为什么我收到这个错误?我该如何解决?

好的

当你在 python 中导入一个模块时,python 做的第一件事就是在你的直接目录中查找它,然后如果它在那里找不到它它在 python 的全局 lib 安装路径中搜索它,然后如果它在那里找不到它要么抛出一个错误

在python中还有一个叫做relative和global import的东西,我很确定Flask两者都使用(相对于模块内部的自身,以及外部依赖的全局)

为了让您在本地存储Flask工作,您要么需要让 python 认为它是其全局模块索引的一部分,要么Flask手动将所有全局导入修复为相对的外部依赖项

编辑:

例如你有一个 lib 文件夹:

lib/
  foo/   # module
  bar/   # module
  spam/  # module

让python将它们视为其全局(用户/系统范围)模块索引的一部分的最懒惰的方法是将它们中的每一个添加到 PATH

在此示例中,您添加的内容PATH如下所示:

full/path/to/lib/foo

让pythonfoo从这个lib文件夹中看到一个模块

如果你想蟒蛇识别barspam太,你需要添加它们都以同样的方式

EDIT2:懒惰的方式第 2 部分

假设您有一些具有依赖项的模块,并且它们都在某个文件夹中:

lib/
  lol/   # module, its just here
  foo/   # module, bar needs this
  bar/   # module, spam needs this
  spam/  # module, you only need this

再次让pythonlib作为其全局(用户/系统范围)模块索引的一部分查看的最懒惰的方法是将lib文件夹添加PATH

你可以从 python 本身做到这一点:

>>> import sys
>>> sys.path.append('/full/path/to/your/lib')
>>> import spam # now this will work, any other module from lib/ will work too

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用python从azure容器本地下载所有blob文件

重用本地下载的Android库

代码从colab本地下载文件

如何在Haskell中本地下载Internet文件

Jasper PDF本地下载与PDF制作不同

MailKit:如何从MimeMessage在本地下载所有附件

使网络爬虫在本地下载多个网页

C# - 在文件下载时读取本地下载路径

创建SSL本地网络以从本地下载iOS应用

将文件上传到Google Cloud Storage而不在本地下载文件?

如何在本地下载p4文件?

阅读从Azure中的Blob容器拼花数据,而本地下载它

直接在线运行 Jupyter notebook(无需在本地下载)

gsutil rsync bucket1 bucket2是否在本地下载/上传文件?

从Maven本地下载人工制品的人工制品

从地图集本地下载无业游民的盒子文件并进行配置

Java-直接读取文件,而无需在本地下载和存储

可以在本地下载Hosted Office 365数据以进行大规模备份吗?

更新SQLite数据库而无需在本地下载数据

如何使用boto3从Glacier Deep Archive本地下载档案?

AWS S3复制对象是否在本地下载?

如何将文件从我的Google云端硬盘下载到我的本地下载文件

欺骗游戏客户端以本地下载文件,而不是从远程服务器下载文件

Python,使用pip下载scipy时出错

尝试使用pip for python下载boto

在使用psql在本地下载/保存之前,将gzip表保存到AWS实例上的csv

将zip文件本地下载到tempfile,将文件提取到tempfile,然后列出文件

如何将图像从公共数据库传输到Google Cloud Bucket,而无需在本地下载

如何解决 Ansible 中本地下载包的依赖关系?当包 A 依赖于包 B