Hi, This works from pypi - but not when installing from source with python
setup.py install which stops this nifty thing from working:
PYTHON_HUNTER="module='os.path'" python yourapp.py
Sandbox monkeypatches os.file, so I think it catches you using copy. Maybe
we need a common API for code that runs at startup?
S++
On Tuesday, March 24, 2015 3:56 PM, Ionel Cristian Mărieș
<[email protected]> wrote:
Hey,
If you just want to copy a out-of-package file into site-package you could just
override the build command and copy it there (in the build dir). Here's an
example: https://github.com/ionelmc/python-hunter/blob/master/setup.py#L27-L31
- it seems to work fine with wheels.
Thanks,
-- Ionel Cristian Mărieș, http://blog.ionelmc.ro
On Mon, Mar 16, 2015 at 11:02 AM, Stuart Axon <[email protected]> wrote:
Hi All This, and another memory-leak bug were triggered by the sandbox.
Would it be possible to either add an API to exempt files, or just allow
writing within site packages, even if just for .pth files ?
I'm monkey patching around these for now
https://github.com/stuaxo/vext/blob/master/setup.py#L16
S++
On Thursday, March 12, 2015 2:54 PM, Stuart Axon <[email protected]> wrote:
For closure: The solution was to make a Command class + implement
finalize_options to fixup the paths in distribution.data_files.
Source:
# https://gist.github.com/stuaxo/c76a042cb7aa6e77285b"""Install a file into the
root of sitepackages on windows as well as linux.
Under normal operation on win32 path_to_site_packagesgets changed to '' which
installs inside the .egg instead."""
import os
from distutils import sysconfigfrom distutils.command.install_data import
install_datafrom setuptools import setup
here = os.path.normpath(os.path.abspath(os.path.dirname(__file__)))
site_packages_path = sysconfig.get_python_lib()site_packages_files =
['TEST_FILE.TXT']
class _install_data(install_data): def finalize_options(self): """
On win32 the files here are changed to '' which ends up inside the
.egg, change this back to the absolute path. """
install_data.finalize_options(self) global site_packages_files
for i, f in enumerate(list(self.distribution.data_files)): if not
isinstance(f, basestring): folder, files = f if
files == site_packages_files: # Replace with absolute path
version self.distribution.data_files[i] =
(site_packages_path, files)
setup( cmdclass={'install_data': _install_data}, name='test_install',
version='0.0.1',
description='', long_description='', url='https://example.com',
author='Stuart Axon', author_email='[email protected]', license='PD',
classifiers=[], keywords='', packages=[],
install_requires=[],
data_files=[ (site_packages_path, site_packages_files), ],
)
On Tue, 10 Mar, 2015 at 11:29 PM, Stuart Axon <[email protected]> wrote:
I had more of a dig into this, with a minimal
setup.py:https://gist.github.com/stuaxo/c76a042cb7aa6e77285bsetup calls
install_dataOn win32 setup.py calls install_data which copies the file into the
egg - even though I have given the absolute path to sitepackagesC:\> python
setup.py install....running install_datacreating build\bdist.win32\eggcopying
TEST_FILE.TXT -> build\bdist.win32\egg\ ....On Linux the file is copied to the
right path:$ python setup.py install.....installing package data to
build/bdist.linux-x86_64/eggrunning install_datacopying TEST_FILE.TXT ->
/mnt/data/home/stu/.virtualenvs/tmpv/lib/python2.7/site-packages....*something*
is normalising my absolute path to site packages into just '' - it's possible
to see by looking at self.data_files in the 'run' function
in:distutils/command/install_data.py- on windows it the first part has been
changed to '' unlike on linux where it's the absolute path I set... still not
sure where it's happening though.*This all took a while, as rebuilt VM and
verified on 2.7.8 and 2.7.9..S++
On Monday, March 9, 2015 12:17 AM, Stuart Axon <[email protected]> wrote: > I
had a further look - and on windows the file ends up inside the .egg file, on
linux it ends up inside the site packages as intended. At a guess it seems like
there might be a bug in the path handling on windows. .. I wonder if it's
something like this
http://stackoverflow.com/questions/4579908/cross-platform-splitting-of-path-in-python
which seems an easy way to get an off-by-one error in a path ?
_______________________________________________
Distutils-SIG maillist - [email protected]
https://mail.python.org/mailman/listinfo/distutils-sig
_______________________________________________
Distutils-SIG maillist - [email protected]
https://mail.python.org/mailman/listinfo/distutils-sig