无法通过Pip安装自定义Python软件包

时间:2020-07-03 15:16:32

标签: python pip python-module python-packaging

我正在编写一个Python包,这是我的文件结构。 simple_eda是主文件夹,我在其中包含 init 文件和代码文件。在我的代码文件中,我有Class 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安装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

2 个答案:

答案 0 :(得分:1)

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

  • 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的操作系统,则此操作可能无法在您的环境之外进行。

答案 1 :(得分:0)

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

要在具有多个conda环境的jupyter笔记本电脑上使用,建议的做法是在基本环境中安装nb_conda_kernels,然后在应在jupyter中使用的每个环境中安装ipykernel(或其他语言内核)笔记本。

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

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

此外,要在特定的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