Packaging Non-Python Files in a Python Library - python

I'm trying to build a Python package for this project that includes the .json files in /fixtures and the *.html files in /templates. When I run the packaging script based off my setup.py, it says it should include those folders in the MANIFEST it generates, but the output just says it's hard-linking them and when I try to install via pip, it dies on the following:
Downloading/unpacking bluetrain
Running setup.py egg_info for package bluetrain
error: package directory 'bluetrain/fixtures' does not exist
Complete output from command python setup.py egg_info:
running egg_info
writing pip-egg-info/bluetrain.egg-info/PKG-INFO
writing top-level names to pip-egg-info/bluetrain.egg-info/top_level.txt
writing dependency_links to pip-egg-info/bluetrain.egg-info/dependency_links.txt
warning: manifest_maker: standard file '-c' not found
error: package directory 'bluetrain/fixtures' does not exist
EDIT: It looks like this was an issue with legacy crud that built up in the virtualenv I was installing succeeding versions of the package into. Trying a clean virtualenv fixed the issue.

Fixed this issue by creating a clean virtualenv and trying to build from there. It appears the constant build/ rebuild cycle in the original environment left legacy files behind that were stopping things from working as intended.

Related

How to change the package path inside an archive created by `python setup.py bdist`?

I am creating a .zip package by command python setup.py bdist.
After the archive is created, the main folder which I packaged is placed at path <archive_name>.zip/<Python_path>/Lib/site-packages/<packaged_folder>.
What I want to achieve is the folder path inside archive to keep some specific, as when I run python setup.py bdist statement for the same code on different environments, the path inside archive gets changed based on Python version and platform.
Edit: I am not talking about --dist-dir option.
To do this you need to explicitly call the install and bdist_dumb commands with some options:
(yes, this is a real command)
setup.py install --root=build\bdist --install-lib=. bdist_dumb --bdist-dir=build\bdist
For the install command you need to override the following options:
--install-lib installation directory for all module distributions
--install-headers installation directory for C/C++ headers
--install-scripts installation directory for Python scripts
--install-data installation directory for data files
Note that the bdist command is obsolete and what you want is basically what wheel format is for:
A wheel is a ZIP-format archive with a specially formatted file name and the .whl extension. It contains a single distribution nearly as it would be installed according to PEP 376 with a particular installation scheme. Although a specialized installer is recommended, a wheel file may be installed by simply unpacking into site-packages with the standard unzip tool while preserving enough information to spread its contents out onto their final paths at any later time.
See the following links for an up-to-date information on packaging Python projects:
Tutorial: Packaging Python Projects (more recent);
Guide: Packaging and distributing projects.

error: package directory <package> does not exist

I already checked the other answers but they didn't help me.
I'd like to upload a package on pypi and this is my setup https://del.dog/vozeworazu.py
When I try to run python setup.py sdist I get this error
running sdist
running egg_info
writing LootGameBotApi.egg-info\PKG-INFO
writing dependency_links to LootGameBotApi.egg-info\dependency_links.txt
writing requirements to LootGameBotApi.egg-info\requires.txt
writing top-level names to LootGameBotApi.egg-info\top_level.txt
error: package directory 'LootGameApi' does not exist
I've tried to put in packages the directory and it worked but when I tried to import it it said it couldn't find the module

error: package directory '<project_name>' does not exist

I have a simple Python package I've created. I copied the setup.py file from the Python docs, but when I run pip install . I get the following error:
~/Projects/wolfgang (master) $ pip install . Processing /Users/Cisplatin/Projects/wolfgang
Complete output from command python setup.py egg_info:
running egg_info
creating pip-egg-info/wolfgang.egg-info
writing pip-egg-info/wolfgang.egg-info/PKG-INFO
writing top-level names to pip-egg-info/wolfgang.egg-info/top_level.txt
writing dependency_links to pip-egg-info/wolfgang.egg-info/dependency_links.txt
writing manifest file 'pip-egg-info/wolfgang.egg-info/SOURCES.txt'
error: package directory 'wolfgang' does not exist
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/k5/grp3jdnn5jvcd14ffvqyr9z00000gn/T/pip-pWAjtJ-build/
I've tried searching online and there seem to be some similar problems on GitHub or StackOverflow, but they all apply to something being broken in the project itself as opposed to the setup.py file. My program does not mess around with any command line arguments or anything like that, so I'm not sure why this is happening.
Here's a link to the actual setup.py file I'm using, if that helps.
There is no setup.py in your repository because you removed it.
There have to be a subdirectory wolfgang. Both __init__.py and vector.py must be in the subdirectory.

(gclalcli) error: could not create 'build/bdist.linux-x86_64/egg': Permission denied

I'm in a battle with installing gcalcli. I'm using this setup since the other more simple methods aren't working. I'm at the step where I have to type in sudo python setup.py install
I get:
running installenter code here
running bdist_egg
running egg_info
writing requirements to gcalcli.egg-info/requires.txt
writing gcalcli.egg-info/PKG-INFO
writing top-level names to gcalcli.egg-info/top_level.txt
writing dependency_links to gcalcli.egg-info/dependency_links.txt
reading manifest file 'gcalcli.egg-info/SOURCES.txt'
writing manifest file 'gcalcli.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
warning: install_lib: 'build/lib.linux-x86_64-2.7' does not exist -- no Python modules to install
creating build/bdist.linux-x86_64/egg
error: could not create 'build/bdist.linux-x86_64/egg': Permission denied
At this point I had just given permissions to everything to even allow this to run, but I'm not sure what to do from here since it's telling me the python modules don't exist.
I discovered that sudo does not work when in an NFS mounted directory. My /u/ directory is in a NFS mounted directory. I had to created /tmp/module with root. I then copied all the module files into /tmp/module and did: "python setup.py install" as root; and it worked.

Manually installing old version of selenium, missing folder error

I'm trying to install an old version of selemenium since the new version seems to have broken my stuff
C:\Users\Administrator>python C:\Python33\selenium-2.39.0\setup.py install
running install
running bdist_egg
running egg_info
writing top-level names to selenium.egg-info\top_level.txt
writing selenium.egg-info\PKG-INFO
writing dependency_links to selenium.egg-info\dependency_links.txt
warning: manifest_maker: standard file 'setup.py' not found
error: package directory 'py\selenium' does not exist
I get that error, and trust me, that folder does most definitely exist.
Make Selenium your working directory
cd C:\Python33\selenium-2.39.0
And then run python setup.py install

Categories