I cannot import function name from another file

python import function from file in different directory
cannot import function from file python
importerror: cannot import name
modulenotfounderror
python call function from another file with arguments
no module named
python call function from another file no module named
python-import all functions from file

I am making a password generator that turns the generated password into an md5 hash, but it will not allow me to import a function from one file to another.

Here is my code.

password.py

import random
import string


def main():

    y = int(input("Enter desired length for password: "))

    def random_char(y):
        return ''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for x in range(y))

    genpass = random_char(y)

    print(genpass)

    def getGenpass():
        return genpass

main()

hash.py

import hashlib
import password
from password import getGenpass


mystring = password.getGenpass()

def main():
    hash_object = hashlib.md5(mystring.encode())
    print("Here is your md5 hash: " + hash_object.hexdigest())

main()

If I remove the imports from password.py the script does work.

disclaimer. I am new to python.

Because your function ist no global, its defined in the main() and its not reachable from outer the main. Also your main always runs on each import. When you only want to use that as an import then try this:

password.py:

import random
import string

def getGenpass():

    def random_char(y):
        return ''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for x in range(y))

    y = int(input("Enter desired length for password: "))

    genpass = random_char(y)

    print(genpass)

    return genpass

And then import only the function in your hash.py:

import hashlib
from password import getGenpass

python, So why does the 2nd function, 'doyr' work in the shell but error when imported to the other script, or in the shell immediately afterward? The only thing that changes  In Node.js, how to import functions from another JavaScript file? tagged Bash, Howto, javascript, node.js, Programming, Tutorial.

getGenpass is an inner function inside Main, why are you expecting that it will be visible?

Python Modules: Creating, Importing, and Sharing, You can also understand them as packages of names, which when imported Although, not every Python file is designed to be imported as a module. For example a for.py module can be created, but cannot be imported because "for" is mean any function or variable which is not nested inside another function or class. ImportError: cannot import name A. then you launch: python ./modules/a.py ImportError: cannot import name B. then you launch: python ./modules/b.py ImportError: cannot import name C (some NON-Existing module or some other error)

password.py

you can code like this:

import random
import string

def getGenpass():
    y = int(input("Enter desired length for password: "))

    def random_char(y):
        return ''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for x in range(y))

    genpass = random_char(y)
    print(genpass)
    return genpass

Traps for the Unwary in Python's Import System, This has changed in Python 3.3: now any directory on sys.path with a name that 3.3+ can't find example.foo either, as the directory containing __init__.py file to a function or object in a separate module, and just import that module from the Another common trap, especially for beginners, is using a local module name  I have a file named handshake.py. Where there is a function send_data(argument). I want to import that function into another file named siptest.py. I am encountering two problems. I am using microsoft visual studio with windows 7, 64-bit. 1) I can't import function. I have tried using, from handshake import* handshkae.send_data(argument)

Calling Functions from Other Files, To use the functions written in one file inside another file include the import line, from filename import function_name . Note that although the file name must  Import class from another file and directory in Python When creating a file, it a good way to keep them outside our main file. For this reason, we need to create other files inside the same directory or other directories.

'import module' vs. 'from module import function', Importing a function into the global namespace risks name collisions. You just can't do it another way when you want all strings to be unicode by default in  The argument to the import function can be a single name, or a list of multiple names. Each of these names can be optionally renamed via as . For example, this would be a valid import statement in start.py : import packA as pA, packA.a1, packA.subA.sa1 as sa1

Import-Module, Import-Module [-Global] [-Prefix <String>] [-Name] <String[]> [-Function <String[]>] For example, the cmdlets and functions in a module are converted to script Import-Module cannot import PowerShell Core modules from another session. The import statement cannot be used in embedded scripts unless such script has a type="module". Bindings imported are called live bindings because they are updated by the module that exported the binding. There is also a function-like dynamic import(), which does not require scripts of type="module".

Comments
  • Define getGenpass outside of the main function.
  • That solved my issue, thank you very much. I was not aware that the def main() would make it so it wasn't global!