I recently ran into an issue using the site package and I wanted to confirm 
that I'm not doing something wrong here before creating an issue:

I have a need to `git subtree` modules into a Django project and then add the 
dependencies such that they're discoverable in code. I also need to have 
consistent behavior between `python setup.py (develop|install)` and `pip 
install -r requirements.txt` (the latter is used by Heroku for project 
installation). An example project that demonstrates the issue is here: 
https://github.com/demianbrecht/python-sitehooks-example.

In the example, I've subtree'd requests into _vendor and forced site hooks to 
fire using `site.main()` in testme/settings.py: 
https://github.com/demianbrecht/python-sitehooks-example/commit/1b81e15c6f28bc80a4f984cffa78eb2ced80a320.
 Forcing the execution is not needed when the package is actually installed 
using setup.py, but is needed when using `pip install -r requirements.txt`. 
This works great when running within a virtualenv, but I get the following on 
system python:

$ python3.6 ./manage.py test
Traceback (most recent call last):
  File "./manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File 
"/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", 
line 364, in execute_from_command_line
    utility.execute()
  File 
"/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", 
line 308, in execute
    settings.INSTALLED_APPS
  File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 
56, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 
41, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/lib/python3.6/site-packages/django/conf/__init__.py", line 
110, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in 
import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "/<path>/<to>/testme/testme/settings.py", line 13, in <module>
    site.main()
  File "/usr/local/lib/python3.6/site.py", line 525, in main
    abs_paths()
  File "/usr/local/lib/python3.6/site.py", line 110, in abs_paths
    m.__cached__ = os.path.abspath(m.__cached__)
  File "/usr/local/lib/python3.6/posixpath.py", line 369, in abspath
    path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not NoneType

Using venv and system comparisons for debugging doesn't help much as site.py is 
different in the two environments. Any insight into what may be going on here 
or what I'm doing wrong would be much appreciated. I realize that I could just 
muck with PYTHONPATH, but I thought this approach would be a little nicer as 
it's transparent to the user.

-------
GPG Fingerprint: 9ACFB014BA1E5B4939ACA3B214E4E96742F22903

Attachment: signature.asc
Description: Message signed with OpenPGP

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to