C'est un flux pour créer votre propre paquet avec setup.py
avec python.
J'ai eu du mal avec l'erreur «module not found», alors j'aimerais laisser une note ici pour ne pas l'oublier.
Cette fois, je ne le donnerai pas à PyPi etc., mais organiserai simplement la procédure pour pip install
dans l'environnement local.
sample.py
, __init __. Py
, setup.py
pip install
foo.py
et exécutez-leAvec la structure suivante
--Installez les fonctions contenues dans sample.py
avec pip install
foo.py
.Documents
└ tasks_project
├ src
│ └ tasks
│ ├ __init__.py
│ └ sample.py # sample.Je veux empaqueter une fonction dans py
├ hoge
│ └ foo.py # foo.échantillon avec py.Exécuter la fonction py
└ setup.py
Étant donné que ces deux répertoires sont beaux-frères, si vous les importez l'un par rapport à l'autre, vous obtiendrez l'erreur suivante.
attempted relative import beyond top-level package.
Alors, installez-le avec pip comme suit afin de pouvoir l'importer de n'importe où.
sample.py
, __init __. Py
, setup.py
Dans sample.py
, écrivez la fonction souhaitée. J'ai simplement écrit quelque chose comme ce qui suit.
J'importe différents modules car je voulais vérifier si «numpy» et «pandas» peuvent être utilisés correctement.
import numpy as np
import pandas as pd
import datetime
def hello():
print("hello_world")
def get_array():
return np.array([1, 2, 3])
def get_df():
return pd.Series([1, 2, 3])
def get_date():
print(datetime.datetime(2019, 12, 1, 1, 1, 1))
__init __. Py
Je n'ai pas écrit ceci ici, donc je suppose que j'obtenais une erreur module not found
.
C'est comme définir la fonction à installer au moment de pip install
.
from .sample import (
hello,
get_array,
get_df,
get_date,
)
__version__ = '0.1.0'
setup.py
Définissez les paramètres les plus importants lorsque vous effectuez pip install
dans setup.py
.
Ci-dessous, je pense que ce n'est pas grave si vous écrivez correctement name
, version
, packages
et package_dir
.
"""Minimal setup file for tasks project."""
from setuptools import setup, find_packages
setup(
name='tasks',
version='0.1.0',
license='proprietary',
description='Module Experiment',
author='greenteabiscuit',
author_email='[email protected]',
url='None.com',
packages=find_packages(where='src'),
package_dir={'': 'src'},
)
pip install
Déplacez-vous vers le répertoire un niveau au-dessus de tasks_project
( Documents
dans ce cas), puis exécutez pip install
.
$ cd Documents
$ pip install ./tasks_project/
Processing ./tasks_project
Building wheels for collected packages: tasks
Building wheel for tasks (setup.py) ... done
..........Abréviation..........
Successfully installed tasks-0.1.0
Si vous voyez "Installé avec succès", vous avez réussi.
foo.py
et exécutezimport tasks
tasks.hello()
arr = tasks.get_array()
print(arr)
df = tasks.get_df()
print(df)
tasks.get_date()
Si vous écrivez ceci, vous devriez l'exécuter ci-dessous et obtenir des résultats sans aucune erreur.
$ cd Documents/hoge/
$ python foo.py
hello_world
[1 2 3]
0 1
1 2
2 3
dtype: int64
2019-12-01 01:01:01
Cela facilitera un peu l'écriture du code de test, etc. Je voulais savoir plus tôt, mais pour une raison quelconque, je n'ai pas trouvé beaucoup de bons articles. .. .. Je me réfère au contenu des livres suivants.
Python Testing with pytest: Simple, Rapid, Effective, and Scalable (English Edition)
Recommended Posts