mirror of https://github.com/coqui-ai/TTS.git
29 lines
1.6 KiB
Markdown
29 lines
1.6 KiB
Markdown
|
This folder contains a symlink called TTS to the parent folder:
|
||
|
|
||
|
lrwxr-xr-x TTS -> ..
|
||
|
|
||
|
This is used to appease the distribute/setuptools gods. When the project was
|
||
|
initially set up, the repository folder itself was considered a namespace, and
|
||
|
development was done with `sys.path` hacks. This means if you tried to install
|
||
|
TTS, `setup.py` would see the packages `models`, `utils`, `layers`... instead of
|
||
|
`TTS.models`, `TTS.utils`...
|
||
|
|
||
|
Installing TTS would then pollute the package namespace with generic names like
|
||
|
those above. In order to make things installable in both install and development
|
||
|
modes (`pip install /path/to/TTS` and `pip install -e /path/to/TTS`), we needed
|
||
|
to add an additional 'TTS' namespace to avoid this pollution. A virtual redirect
|
||
|
using `packages_dir` in `setup.py` is not enough because it breaks the editable
|
||
|
installation, which can only handle the simplest of `package_dir` redirects.
|
||
|
|
||
|
Our solution is to use a symlink in order to add the extra `TTS` namespace. In
|
||
|
`setup.py`, we only look for packages inside `tts_namespace` (this folder),
|
||
|
which contains a symlink called TTS pointing to the repository root. The final
|
||
|
result is that `setuptools.find_packages` will find `TTS.models`, `TTS.utils`...
|
||
|
|
||
|
With this hack, `pip install -e` will then add a symlink to the `tts_namespace`
|
||
|
in your `site-packages` folder, which works properly. It's important not to add
|
||
|
anything else in this folder because it will pollute the package namespace when
|
||
|
installing the project.
|
||
|
|
||
|
This does not work if you check out your project on a filesystem that does not
|
||
|
support symlinks.
|