sjp*_*ral 5 python pip google-colaboratory
我正在尝试将我编写的包导入 Google Colaboratory 笔记本中。我将包内容上传到我的云端硬盘,然后运行:
[ ] from google.colab import drive
[ ] drive.mount('content/gdrive/')
[ ] ! pip install --user /content/gdrive/My\ Drive/my-package
Processing ./gdrive/My Drive/my-package
Building wheels for collected packages: my-package
Building wheel for my-package (setup.py) ... done
Created wheel for my-package:
Stored in directory:
Successfully built my-package
Installing collected packages: my-package
Successfully installed my-package-1.0.0.dev1
Run Code Online (Sandbox Code Playgroud)
pip list显示软件包已成功安装。但是,包的导入失败并带有ModuleNotFoundError.
我已在本地计算机上成功安装并导入了 my-package 。我还使用 .com 通过同一个 Colab 笔记本成功安装并导入了另一个 Python 包pip install --user。正如这里提到的,我还尝试过重新启动内核。
这可能与这个相关但未回答的问题有关。
小智 7
在我看来,您链接到的有关重新启动运行时的 github 页面有点含糊,所以我只是想澄清一下:
您需要运行该!pip install单元。然后“重新启动运行时”。然后运行您的import语句单元格。
我可能建议您在执行这些步骤之前“重置所有运行时”,以确保您有一个干净的状态。
-- 如果您已经执行了上述步骤:您使用的是Python 2 还是 3 笔记本?(不是 100% 确定为什么这很重要,但更多信息会更好)
您是否pip install从谷歌驱动器链接到您的本地计算机?(如果没有,请尝试看看是否有效并报告)
可编辑的安装(或setuptoolsdevelopment-mode)将模块路径附加到easy-install.pth文件中。该site模块在 python 启动时处理这些文件并将路径附加到sys.path. 这就是为什么它只有在重新启动运行时后才起作用。
site人们可以通过导入模块并(重新)运行来避免重新启动 Colab 笔记本site.main()。
%pip install -e pkg
import site
site.main()
import pkg
Run Code Online (Sandbox Code Playgroud)
但是,在下面的示例中,这会删除当前目录sys.path并将其替换为其绝对路径。
%pip install -e "git+https://github.com/jd/tenacity#egg=tenacity"
print("\nTrying to import tenacity")
try:
import tenacity
except ImportError as exc:
print("ImportError")
print(exc)
print()
import sys, site
print("\n##### sys.path original #####")
for p in sys.path:
print(f"'{p}'")
print()
site.main()
print("\n##### sys.path after site.main() #####")
for p in sys.path:
print(f"'{p}'")
print()
import tenacity
print(f"\nImported tenacity from {tenacity.__file__}")
Run Code Online (Sandbox Code Playgroud)
印刷
Obtaining tenacity from git+https://github.com/jd/tenacity#egg=tenacity
Cloning https://github.com/jd/tenacity to ./src/tenacity
Running command git clone -q https://github.com/jd/tenacity /content/src/tenacity
Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.6/dist-packages (from tenacity) (1.15.0)
Installing collected packages: tenacity
Running setup.py develop for tenacity
Successfully installed tenacity
Trying to import tenacity
ImportError
No module named 'tenacity'
##### sys.path original #####
''
'/env/python'
'/usr/lib/python36.zip'
'/usr/lib/python3.6'
'/usr/lib/python3.6/lib-dynload'
'/usr/local/lib/python3.6/dist-packages'
'/usr/lib/python3/dist-packages'
'/usr/local/lib/python3.6/dist-packages/IPython/extensions'
'/root/.ipython'
##### sys.path after site.main() #####
'/content'
'/env/python'
'/usr/lib/python36.zip'
'/usr/lib/python3.6'
'/usr/lib/python3.6/lib-dynload'
'/usr/local/lib/python3.6/dist-packages'
'/usr/lib/python3/dist-packages'
'/usr/local/lib/python3.6/dist-packages/IPython/extensions'
'/root/.ipython'
'/content/src/tenacity'
Imported tenacity from /content/src/tenacity/tenacity/__init__.py
Run Code Online (Sandbox Code Playgroud)
Colab 笔记本示例:https://colab.research.google.com/drive/1S5EU-MirhaTWz1JJVdos3GcojmOSLC1C ?usp=sharing
通过博客文章偶然发现了这一点: https: //yidatao.github.io/2016-05-10/Python-easyinstall-generates-pth-file/
感谢 @jojo 的建议,我在本地计算机上卸载并重新安装了该软件包,并能够诊断问题。在我的本地计算机和 Colab 中,仅当在命令 ( ) 中包含-e(可编辑)标志并在安装后重新启动运行时时,我才能成功安装和导入包。我不知道为什么包括国旗会有所作为;如果您有什么见解请评论!pippip install --user -e /content/gdrive/My\ Drive/my-package-e
| 归档时间: |
|
| 查看次数: |
7321 次 |
| 最近记录: |