Setuptools python - import problem inside project
I'm trying to build simple project and then prepare it to create whl file. But after pip install <name>.whl
I have strange import problem.
Project structure:
foo/
/foo
__init__.py
main.py
bar.py
setup.py
setup.py file:
from setuptools import setup, find_packages
setup(
name='foo',
version='0.0.1',
packages=find_packages(),
include_package_data=True,
entry_points={'console_scripts': ['foo=foo.main:func1']}
)
main.py
from bar import func2
def func1():
print('func1')
func2()
bar.py
def func2():
print('func2')
I have an empty init file.
I create whl file by command: python3 setup.py bdist_wheel
and then cd dist/ && pip install ...
But when I run script by foo
I got an error:
ModuleNotFoundError: No module named 'bar'
This problem exists only when I have splited project in a few files, when I tried to keep everything in main.py (removed bar.py) without imports then it worked.
Any idea how should I modify setup.py?
python import python-import setuptools setup.py
add a comment |
I'm trying to build simple project and then prepare it to create whl file. But after pip install <name>.whl
I have strange import problem.
Project structure:
foo/
/foo
__init__.py
main.py
bar.py
setup.py
setup.py file:
from setuptools import setup, find_packages
setup(
name='foo',
version='0.0.1',
packages=find_packages(),
include_package_data=True,
entry_points={'console_scripts': ['foo=foo.main:func1']}
)
main.py
from bar import func2
def func1():
print('func1')
func2()
bar.py
def func2():
print('func2')
I have an empty init file.
I create whl file by command: python3 setup.py bdist_wheel
and then cd dist/ && pip install ...
But when I run script by foo
I got an error:
ModuleNotFoundError: No module named 'bar'
This problem exists only when I have splited project in a few files, when I tried to keep everything in main.py (removed bar.py) without imports then it worked.
Any idea how should I modify setup.py?
python import python-import setuptools setup.py
3
I think the problem is with your imports, not yoursetup.py
. I think that it should be befrom foo.bar import func2
? (Or if you want to use inter-package imports,from .bar import func2
)
– mgilson
Jan 2 at 0:13
heh, thank you, I didn't expected that :)
– Dawid Żurawski
Jan 2 at 0:19
No problem. I have a couple minutes now -- I'll expand on that a little and write it up as an answer in the hope that maybe it'll help someone else someday...
– mgilson
Jan 2 at 2:43
add a comment |
I'm trying to build simple project and then prepare it to create whl file. But after pip install <name>.whl
I have strange import problem.
Project structure:
foo/
/foo
__init__.py
main.py
bar.py
setup.py
setup.py file:
from setuptools import setup, find_packages
setup(
name='foo',
version='0.0.1',
packages=find_packages(),
include_package_data=True,
entry_points={'console_scripts': ['foo=foo.main:func1']}
)
main.py
from bar import func2
def func1():
print('func1')
func2()
bar.py
def func2():
print('func2')
I have an empty init file.
I create whl file by command: python3 setup.py bdist_wheel
and then cd dist/ && pip install ...
But when I run script by foo
I got an error:
ModuleNotFoundError: No module named 'bar'
This problem exists only when I have splited project in a few files, when I tried to keep everything in main.py (removed bar.py) without imports then it worked.
Any idea how should I modify setup.py?
python import python-import setuptools setup.py
I'm trying to build simple project and then prepare it to create whl file. But after pip install <name>.whl
I have strange import problem.
Project structure:
foo/
/foo
__init__.py
main.py
bar.py
setup.py
setup.py file:
from setuptools import setup, find_packages
setup(
name='foo',
version='0.0.1',
packages=find_packages(),
include_package_data=True,
entry_points={'console_scripts': ['foo=foo.main:func1']}
)
main.py
from bar import func2
def func1():
print('func1')
func2()
bar.py
def func2():
print('func2')
I have an empty init file.
I create whl file by command: python3 setup.py bdist_wheel
and then cd dist/ && pip install ...
But when I run script by foo
I got an error:
ModuleNotFoundError: No module named 'bar'
This problem exists only when I have splited project in a few files, when I tried to keep everything in main.py (removed bar.py) without imports then it worked.
Any idea how should I modify setup.py?
python import python-import setuptools setup.py
python import python-import setuptools setup.py
asked Jan 1 at 23:56
Dawid ŻurawskiDawid Żurawski
445
445
3
I think the problem is with your imports, not yoursetup.py
. I think that it should be befrom foo.bar import func2
? (Or if you want to use inter-package imports,from .bar import func2
)
– mgilson
Jan 2 at 0:13
heh, thank you, I didn't expected that :)
– Dawid Żurawski
Jan 2 at 0:19
No problem. I have a couple minutes now -- I'll expand on that a little and write it up as an answer in the hope that maybe it'll help someone else someday...
– mgilson
Jan 2 at 2:43
add a comment |
3
I think the problem is with your imports, not yoursetup.py
. I think that it should be befrom foo.bar import func2
? (Or if you want to use inter-package imports,from .bar import func2
)
– mgilson
Jan 2 at 0:13
heh, thank you, I didn't expected that :)
– Dawid Żurawski
Jan 2 at 0:19
No problem. I have a couple minutes now -- I'll expand on that a little and write it up as an answer in the hope that maybe it'll help someone else someday...
– mgilson
Jan 2 at 2:43
3
3
I think the problem is with your imports, not your
setup.py
. I think that it should be be from foo.bar import func2
? (Or if you want to use inter-package imports, from .bar import func2
)– mgilson
Jan 2 at 0:13
I think the problem is with your imports, not your
setup.py
. I think that it should be be from foo.bar import func2
? (Or if you want to use inter-package imports, from .bar import func2
)– mgilson
Jan 2 at 0:13
heh, thank you, I didn't expected that :)
– Dawid Żurawski
Jan 2 at 0:19
heh, thank you, I didn't expected that :)
– Dawid Żurawski
Jan 2 at 0:19
No problem. I have a couple minutes now -- I'll expand on that a little and write it up as an answer in the hope that maybe it'll help someone else someday...
– mgilson
Jan 2 at 2:43
No problem. I have a couple minutes now -- I'll expand on that a little and write it up as an answer in the hope that maybe it'll help someone else someday...
– mgilson
Jan 2 at 2:43
add a comment |
1 Answer
1
active
oldest
votes
The problem is with your imports -- not your setup.py
. What is happening is that your setup.py
is installing the package foo
which has submodules main
and bar
.
To import a function from a submodule, you do something like:
from foo.bar import func2
or, if you are doing a package relative import (e.g. importing bar
from main
):
from .bar import func2
This second version won't work if the module that is doing the importing isn't part of the foo
package.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53999869%2fsetuptools-python-import-problem-inside-project%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The problem is with your imports -- not your setup.py
. What is happening is that your setup.py
is installing the package foo
which has submodules main
and bar
.
To import a function from a submodule, you do something like:
from foo.bar import func2
or, if you are doing a package relative import (e.g. importing bar
from main
):
from .bar import func2
This second version won't work if the module that is doing the importing isn't part of the foo
package.
add a comment |
The problem is with your imports -- not your setup.py
. What is happening is that your setup.py
is installing the package foo
which has submodules main
and bar
.
To import a function from a submodule, you do something like:
from foo.bar import func2
or, if you are doing a package relative import (e.g. importing bar
from main
):
from .bar import func2
This second version won't work if the module that is doing the importing isn't part of the foo
package.
add a comment |
The problem is with your imports -- not your setup.py
. What is happening is that your setup.py
is installing the package foo
which has submodules main
and bar
.
To import a function from a submodule, you do something like:
from foo.bar import func2
or, if you are doing a package relative import (e.g. importing bar
from main
):
from .bar import func2
This second version won't work if the module that is doing the importing isn't part of the foo
package.
The problem is with your imports -- not your setup.py
. What is happening is that your setup.py
is installing the package foo
which has submodules main
and bar
.
To import a function from a submodule, you do something like:
from foo.bar import func2
or, if you are doing a package relative import (e.g. importing bar
from main
):
from .bar import func2
This second version won't work if the module that is doing the importing isn't part of the foo
package.
answered Jan 2 at 2:43


mgilsonmgilson
212k39420532
212k39420532
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53999869%2fsetuptools-python-import-problem-inside-project%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
I think the problem is with your imports, not your
setup.py
. I think that it should be befrom foo.bar import func2
? (Or if you want to use inter-package imports,from .bar import func2
)– mgilson
Jan 2 at 0:13
heh, thank you, I didn't expected that :)
– Dawid Żurawski
Jan 2 at 0:19
No problem. I have a couple minutes now -- I'll expand on that a little and write it up as an answer in the hope that maybe it'll help someone else someday...
– mgilson
Jan 2 at 2:43