【问题标题】:Custom Python package is not accessible installed via Pip无法通过 Pip 安装自定义 Python 包
【发布时间】:2020-10-24 08:23:14
【问题描述】:

我正在编写一个 Python 包,这是我的文件结构。 simple_eda 是我有 init 文件和我的代码文件的主文件夹。在我的代码文件中,我有完成所有工作的 SimpleEDA 类。导入我想用的

import SimpleEDA or from simple_eda import SimpleEDA

我的初始化文件是空的。

  • simple_eda

    .初始化.py

    .simple_eda.py

  • 测试

  • setup.py

  • README.md

  • 许可证

我已使用此命令为我的 simple_eda 构建 whl。我在 setup.py 文件所在的主目录中使用了这个命令。

python3 setup.py sdist bdist_wheel

这在 dist 文件夹中成功创建了 whl 文件和 tar.gz 文件。所以我用了

pip install simple_eda.whl

然后安装包。所以我在终端中编写 python 来激活 Python。我可以导入我的包用户

from simple_eda.simple_eda import SimpleEDA

但如果我尝试在 Jupyter 笔记本中执行此操作,则会出现错误。

 from simple_eda.simple_eda import SimpleEDA

这是我的 setup.py 文件代码。

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="simple_eda", 
    version="0.0.1",
    author="Muhammad Shahid Sharif",
    author_email="chshahidhamdam@gmail.com",
    description="A wrapper around Pandas to perform Simple EDA with less code.",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="my git link here",
    packages=['simple_eda'],
    install_requires = ['matplotlib==3.0.3','nltk==3.4.5',
'numpy==1.17.2',
'numpydoc==0.9.1',
'pandas==0.25.1',
'scikit-image==0.15.0',
'scikit-learn==0.22.2.post1',
'scipy==1.4.1',
'seaborn==0.9.0',
'spacy==2.2.3',
'spacy-langdetect==0.1.2',
'spacy-readability==1.3.0',
'textblob==0.15.3'],
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.5',
)

我想导入我的包

import SimpleEDA or from simple_eda import SimpleEDA

【问题讨论】:

  • 我已经尝试从 Documents 目录和主目录运行它,它在这两个目录下都可以正常工作
  • 它也适用于文档目录中的目录,
  • 也在桌面上运行
  • jupyter 笔记本

标签: python pip python-module python-packaging


【解决方案1】:

由于您处于 Conda 环境中,因此您似乎尚未为该环境安装 Jupyter。相反,您正在运行的 jupyter 可执行文件可能是全局安装的,而您的本地软件包安装在本地(在 Conda 环境中)与 pip。注意两个可执行文件的不同路径:

  • Jupyter:/snap/bin/jupyter
  • python3:$HOME/anaconda3/envs/eda_test_2/bin/python3

因此,只需为您的 Conda 环境安装 Jupyter,或者使用

conda install jupyter

pip install jupyter

旁注:由于您处于 Conda 环境中,因此您应该能够简单地使用 python 而不是 python3。一个只是另一个的别名。如果您在python 仍然是 Python 2 的操作系统上,这可能无法在您的环境之外工作。

【讨论】:

  • 补充一点,当在多个conda环境中使用jupyter时,我更喜欢在基础环境中安装nb_conda_kernels,然后在jupyter中应该可以访问的每个环境中安装ipykernel。然后,当您启动 jupyter notebook 时,您将可以选择将内核更改为您的不同环境。
  • 使用 pip install jupyter 安装了 jupyter,这是新路径 {/home/shahid/anaconda3/envs/eda_test_2/bin/jupyter } 但我仍然遇到同样的错误
【解决方案2】:

问题似乎是 OP 有多个 conda 环境,并且该软件包安装在一个 python 环境中,但 jupyter notebook 无法访问该环境。

要将 jupyter notebook 与多个 conda 环境一起使用,建议的做法是在基础环境中安装 nb_conda_kernels,然后在应该在 jupyter notebook 中使用的每个环境中安装 ipykernel(或其他语言内核)。

conda install -n base nb_conda_kernels
conda install -n MYENV ipykernel
jupyter-notebook  # Run this from the base environment

然后,导航到您的 jupyter notebook,打开它,选择与您要使用的 conda 环境对应的内核,然后运行您的 notebook。

另外,要在特定的 conda 环境中安装自定义 pip 包,OP 的命令应该是明确的。例如,使用 python -m pip 代替 pip 包装器。

conda activate MYENV  # or source activate MYENV
python -m pip install MYPACKAGE.whl

在 OP 的情况下,他们应该在具有自定义包的任何环境中安装 ipykernel,然后在使用 jupyter notebook 时,他们应该使用该环境的内核。

相关:https://github.com/jupyter/help/issues/342#issuecomment-382837602

【讨论】:

  • 它开始工作了。谢谢你。我还有一个问题。如何更改导入包的方式?目前我是这样导入的。我想要的方式来自 simple_eda.simple_eda import SimpleEDA
  • 第一个 simple_eda 是包名,第二个 simple_eda 是文件名,SimpleEDA 是我在那个文件中的主类。
  • 太棒了。如果这回答了您的问题,请选择绿色复选标记将其标记为答案。至于你的第二个问题,你可以加from simple_eda.simple_eda import SimpleEDAsimple_eda/__init__.py
  • 那么我该如何导入呢?导入 simple_eda?
  • 那么你可以使用from simple_eda import SimpleEDA
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2017-10-22
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
相关资源
最近更新 更多