Pip django app installation - python

I am currently working on an internal ad manager as a django app! It is called "glinks" which basically means graphical link. Kinda makes sense I guess. I wanted to make it available through pip so I went through all the steps and it can now be found here:
https://pypi.python.org/pypi/django-glinks/
For some reason when I install it straight from the tar file on the page i get the proper folder/file structure.
django-glinks
*files needed
glinks
*files needed
templatetags
*files needed
BUT! When I used pip install django-glinks i dont get the templatetags directory or files with it! so instead i get this:
django-glinks
*files needed
glinks
*files needed
I am pretty new to this so it would be great if someone could help me out. Here is my setup.py file:
from distutils.core import setup
import os
README = open(os.path.join(os.path.dirname(__file__), 'README.txt')).read()
# allow setup.py to be run from any path
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
setup(
name='django-glinks',
version='0.1.4',
author='Shawn Simon',
author_email='shawn.simon.developer#gmail.com',
packages=['glinks'],
url='http://pypi.python.org/pypi/django-glinks/',
license='LICENSE.txt',
description='Interal add manager for django sites.',
long_description=open('README.txt').read(),
install_requires=[
"Django >= 1.6.0",
],
classifiers=[
'Environment :: Web Environment',
'Framework :: Django',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License', # example license
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
)
and here is my manafest.in :
include *.txt
recursive-include docs *.txt
recursive-include docs *.py
recursive-include docs *.rst
recursive-include docs Makefile
recursive-include pypiuploader *.py
recursive-include tests *.py
include glinks/templatetags/*.py
include *.py

Correcting setup - completing packages var
Good you show the setup.py. It is missing the reference to the glingks.templatetags package.
If you add this package into packages as shown below, it will work. For me, I was after this modification ïmporting not only glinks, but also glinks.templatetags.
setup(
name='django-glinks',
version='0.1.4',
author='Shawn Simon',
author_email='shawn.simon.developer#gmail.com',
packages=['glinks', "glinks.templatetags"],
url='http://pypi.python.org/pypi/django-glinks/',
license='LICENSE.txt',
description='Interal add manager for django sites.',
long_description=open('README.txt').read(),
install_requires=[
"Django >= 1.6.0",
],
classifiers=[
'Environment :: Web Environment',
'Framework :: Django',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License', # example license
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
)

Related

Create Pip package dependent on Shared Library

I have a C++ project that I have successfully created a Python binding for using Swig. I am able to create a Pip installation for the Python binding of my overall project but it is failing to copy the shared object needed for the binding to work.
When creating a Python binding for a C++ project with Swig there is a shared library created as well as a .py file that acts as the callable definitions for the Python API (think of it as a ).
Here is an example of what my setup.py file looks like:
import setuptools
setuptools.setup(
name='example',
version='0.0.1',
author='me',
description='brief description',
keywords='example, pypi, package',
long_description=long_description,
long_description_content_type='text/markdown',
url='repo.com',
project_urls={
'Documentation': 'docs.com',
'Bug Reports':'repo/issues.com',
'Source Code': 'repo.com',
},
# location of Python API related files
package_dir={'': 'Python'},
packages=setuptools.find_packages(where='Python'),
package_data={'': ['path/to/_example.so']},
classifiers=[
# see https://pypi.org/classifiers/
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3 :: Only',
'Operating System :: OS Independent',
],
python_requires='>=3.6',
)
How can I modify my setup.py file to include the Swig binding creation process that creates a Pip package out of my project.

How to add submodules in a Python Library?

I have created a python library whose structure looks like this.
|/library_name
| |__init__.py
| |/subpackage
| | |__init__.py
| | |
|setup.py
|setup.cfg
|LICENSE
Now when i published in pypi, I couldn't see the inner subpackages installed along with it. What should I do? What should be in outer __init__.py. Assume inner __init__.py has classes which I have written. Somebody please help how to add subpackages to the python library.
Here's the setup.py format
setup(
name = 'package',
packages = ['package'],
version = '1.0.1',
license='GNU General Public Version 3',
description = 'Package is the open source Python Library for solving various AI needs',
long_description = long_description,
long_description_content_type = "text/markdown",
author = ['Vigneshwar K R'],
author_email = 'mymail#gmail.com',
url = 'https://github.com/ToastCoder/repo',
download_url = 'https://github.com/ToastCoder/repo/archive/master.zip',
keywords = ['ARTIFICIAL INTELLIGENCE', 'TENSORFLOW'],
install_requires=['tensorflow'],
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Intended Audience :: Science/Research',
'Intended Audience :: Education',
'Topic :: Software Development :: Build Tools',
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9'
],
)
Could you share said setup.py & __init__.py codes please ?
I see two ways to deal with this :
make the content from lib/submodule available from the top level : in lib/__init__.py add from submodule import *, then add every imported name in __all__. As far as i know, this is bad practice everywhere BUT inside of __init__.pys
add the submodule directory to setup.py's packages parameter : packages=["lib", "lib.submodule"]
edit: as i expected, submodule is missing from the packages parameter, so it is not considered needed.
the find_packages option commented about has the same effect as adding lib.submodule to the packages list, it is mainly used in large libraries where adding every single module manually would be a pain.

My long description isn't showing on PyPi?

I tried having long_description print when I build my wheel, and it prints just fine. But when I upload to PyPi it doesn't show my long description there. Here's my setup.py, hopefully someone can help figure this out.
from setuptools import setup
from codecs import open
from os import path
here = path.abspath(path.dirname(__file__))
with open(path.join(here, 'README.rst'), encoding='utf-8') as f:
long_description = f.read()
setup(
name='matchmod',
version='1.2.1',
description='Simple Rust-like pattern matching for Python, with some added features',
long_description=long_description,
url='https://github.com/AN3223/rustlike-pattern-matching-for-python',
author='AN3223',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
],
keywords='rust rustlang procedural',
py_modules=['matchmod']
)
EDIT: I just realized I'm getting this error when building the wheel Error while finding module specification for 'setup.py' (AttributeError: module 'setup' has no attribute '__path__'), not sure what to do to solve this? I tried opening the file this way like the link from yausername suggested but still got the same error:
from pkg_resources import resource_string
long_description = resource_string(__name__, 'README.rst').decode('utf-8')

install python project using PIP

I've developed a chatbot project and this is the structure of its folder:
chatbot1:
__init__.py
__pycache__
build
chatbot_script.egg-info
dist
MANIFEST.in
package_data.dat
README.rst
setup.cfg
setup.py
stanford-postagger-full-2015-04-20
main_chatbot.py
Female_chatbot.py
Male_chatbot.py
arabic_const.py
normalize.py
stem_const.py
stemming.py
and this is the setup.py:
from setuptools import setup, find_packages
from codecs import open
from os import path
here = path.abspath(path.dirname(__file__))
with open(path.join(here, 'README.rst'), encoding='utf-8') as f:
long_description = f.read()
setup(name='chatbot_script',
version='1.2.0',
description='is a simple chatbot_script that uses simple matching ',
long_description=long_description,
url='https://github.com/pypi/chatbot_script',license='MIT', classifiers=
['Development Status :: 3 - Alpha','Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',],
keywords='sample setuptools development',
packages=find_packages(),
install_requires=['peppercorn'],
extras_require={
'dev': ['check-manifest'],
'test': ['coverage'],},
package_data={
'sample': ['package_data.dat'],},
entry_points={
'console_scripts': [
'sample=sample:main',],},)
I successfully upload the chatbot_script to PyPi and testPyPi. But when I download it there are only these files:
chatbot_script-1.2.0:
chatbot_script.egg-info
PKG-INFO
README.rst
setup.cfg
setup.py
Why I can't upload the other files?
Your main files should go in a wrapper folder
and in your MANIFEST.in you can include/exlude files
For example
File Structure:
chatbot1:
MANIFEST.in
setup.cfg
setup.py
README.rst
chatbot1:
<package files>
MANIFEST.in
recursive-include chatbot1 .*
graft chatbot1
prune chatbot1/unwanted_files

pip install ignoring child directories on install with django project

I am writing a Django application and am very new to the framework and python. I am following the tutorial here: https://docs.djangoproject.com/en/1.9/intro/reusable-apps/ and am currently at packaging and installing the application created from this tutorial: https://docs.djangoproject.com/en/1.9/intro/tutorial01/
This is my first Django application and my first time using Python.
Currently my setup.py file looks like this:
import os
from setuptools import find_packages, setup
with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme:
README = readme.read()
# allow setup.py to be run from any path
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
setup(
name= 'django-polls',
version='0.1',
packages=find_packages(),
include_package_date=True,
license='BSD License', #example license
description = 'A simple Django app to conduct Web-based polls.',
long_description = README,
url='https://www.example.com',
author='Your Name',
author_email='yourname#example.com',
classifiers=[
'Environment :: Web Environment',
'Framework :: Django',
'Framework :: Django :: 1.9.6', # replace "X.Y" as appropriate
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License', # example license
'Operating System :: OS Independent',
'Programming Language :: Python',
# Replace these appropriately if you are stuck on Python 2.
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
)
my MANIFEST.in file looks like this:
include LICENSE
include README.rst
recursive-include polls/static *
recursive-include polls/templates *
recursive-include docs *
my file directory is as follows:
|polls
|__init.py__
|admin.py
|apps.py
|models.py
|tests.py
|urls.py
|views.py
|__pychache__
|# pycachestuff
|migrations
|# migrations stuff
|static
|polls
|images
|background.gif
|style.css
|templates
|polls
|detail.html
|index.html
|results.html
|docs
|
When I run the setup, the produced .zip works great, all the directories are included. However, when I run
pip install C:\Path\To\dist\django-polls-0.1.zip -t C:\Path\To\Package
It only installs what is immediately under the primary polls directory and migrations. It ignores the subdirectories static and templates. It also ignores docs, but the folder is empty and the tutorial has led me to believe empty directories are ignored.
Does anyone know how I can fix this? A few answers I have seen suggest using package_data or data_files, but I'm very new to python and I can't seem to get the syntax right (or those answers are wrong).
Thank you for your time

Categories

Resources