Reputation: 177
Whilst running some unit tests I was presented with the following error when trying to import from absolute path:
tests/unit/test_parameter_combinations.py:3: in <module>
from TradingPlatform.core.parameter_combinations import ParameterCombinations
E ModuleNotFoundError: No module named 'TradingPlatform'
ChatGPT suggested that if I wanted to package this, it might be useful to create an editable install and this could resolve the path issue.
I also wanted to ship this in the future.
I created the following toml
file:
[build-system]
requires = ["setuptools>=64", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "TradingPlatform"
version = "0.1.0"
description = "A platform for trading infrastructure and strategy testing."
dependencies = [
"pandas",
"numpy",
"scikit-learn",
"statsmodels",
]
[tool.setuptools]
packages = ["TradingPlatform"]
[tools.setuptools.packages.find]
where = ["."]
include = ["TradingPlatform*"]
This is a simplified project tree (I have removed some of the modules in core
and tests
to make this smaller).
TradingPlatform
├── __init__.py
├── core
│ ├── __init__.py
│ ├── base_trading_strategy.py
├── notebooks
│ └── main.ipynb
├── pyproject.toml
├── tests
│ ├── integration
│ │ └── __init__.py
│ └── unit
│ ├── __init__.py
│ └── test_strategy_performance_evaluation.py
└── utils
├── __init__.py
├── helper_funcs.py
└── logging_setup.py
This has led to the following error error: package directory 'TradingPlatform' does not exist
.
I have been stuck on this error for quite some time, having tried reconfiguring the toml
file, uninstalling and reinstalling the package but to no avail. Below are a few of the different toml
file configurations I have tried:
1.
[tool.setuptools]
packages = ["TradingPlatform", "TradingPlatform.core", "TradingPlatform.utils", "TradingPlatform.tests"]
[tool.setuptools.package-dir]
# Explicitly tell setuptools where to find the root package directory
TradingPlatform = "TradingPlatform"
[tool.setuptools]
packages = ["TradingPlatform", "TradingPlatform.core", "TradingPlatform.utils", "TradingPlatform.tests"]
[tool.setuptools.packages.find]
where = ["."]
I was expecting to find the directory name, TradingPlatform
, and each of the modules
core
tests
utils
in the top_level.txt
file within the .egg-info
directory, but it is only populated with TradingPlatform
and in some instances is empty.
I am quite unfamiliar with shipping a package so would really appreciate any guidance in resolving this issue. Anything else I can provide for further detail, please let me know.
Upvotes: 0
Views: 36