Problem in the Pickle library in Python

0

So, trying to apply the following code, but the compiler is giving me the following problem, I can not think of anything other than an installation problem, but I got this problem on two different computers with the same code:

import pickle

arqT = open('turmaAlunos.dat', 'ab')
choice = 'n'


while True:
    nome = input('Digite nome do aluno')
    pickle.dump(nome,arqT)

    if name == '':
        while True:
            choice = input("Voce quer mesmo terminar? [s/n]")
            if choice == 's':
                break
            elif choice == 'n':
                break
            else:
                print("Opção inválida")
                continue

        if choice == 's':
            break
        else:
            continue

    matOk = False
    while not matOk:
        matricula = input('Digite a matricula do aluno:')
        if len(matricula) < 6:
            print('Matricula inválida, digite novamente')
        else:
            matOk = True

    notas = []

    print("Digite as notas do alunos:\n")
    for i in range(3):
        notas.append(int(input()))

    for i in range(len(notas)):
        notas[i] = int(notas[i])

    pickle.dump(notas,arqT)

arqT.close()

---- Return:

/usr/bin/python3.6 /../PycharmProjects/aval1/pickle.py
Digite nome do aluno etc
Traceback (most recent call last):
  File "../PycharmProjects/aval1/pickle.py", line 1, in <module>
    import pickle
  File "../PycharmProjects/aval1/pickle.py", line 9, in <module>
    pickle.dump(nome,arqT)
AttributeError: module 'pickle' has no attribute 'dump'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 26,                in <module>
    import cPickle as pickle
ModuleNotFoundError: No module named 'cPickle'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in        apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in     <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in     <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in     <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 36,     in <module>
    import pickle
  File "../PycharmProjects/aval1/pickle.py", line 9, in <module>
    pickle.dump(nome,arqT)
AttributeError: module 'pickle' has no attribute 'dump'

Original exception was:
Traceback (most recent call last):
  File "../PycharmProjects/aval1/pickle.py", line 1, in <module>
    import pickle
  File "../PycharmProjects/aval1/pickle.py", line 9, in <module>
    pickle.dump(nome,arqT)
AttributeError: module 'pickle' has no attribute 'dump'

---- att

I continue with the problem in the code:     import pickle

arq = open('testePickle.dat','wb')

variavel = 0

pickle.dump(variavel,arq)
    
asked by anonymous 08.11.2018 / 05:56

2 answers

1

Your problem is in the name of your file. You called it from pickle.py but pickle already and a module name that comes with python, so it's getting confused what you mean by import pickle .

Rename your program from pickle.py to test_pickle.py . Also remove the pickle.pyc file that was generated in the same folder. This will fix your problem.

    
08.11.2018 / 17:33
-1

Apparently you broke your Python3 system installation - and possibly Python2.

All Linux mdoernos allow themselves no longer comes by default - the parallel installation of Python 2.7 and a recent version of Python 3. Try to interfere with these installations outside of the package management of your Linux distribution, even with the use of "pip install" - Python's own package manager - can have destructive effects.

Installing unofficial repositories with different versions of software (for example, an unofficial repository such as "PPA") can sometimes cause more problems than benefits - since the integration of packages in these repositories with the rest of the system does not have the curators of the distribution - usually contains only what "works for the repository author")

pickle is one of the fundamental modules of the standard Python library - and the errors you have show it can not be loaded - and for a complex question (cpickle only exists in Python 2, and you get an error message that "cPickle does not exist" in a module that is in a Python 3 folder.)

What you have to try to do is restore the Python2 E and Python3 installations to the originals of your Linux distribution - and remember to never try to install anything there except by the system package manager. To install other versions of Python, preferably by compiling them yourself, in a different prefix, and for any Python project, create a "virtualenv" that can contain personal versions of all third-party libraries that the project uses in isolation . (Never use sudo pip install to install or update a Python package on the system.)

    
08.11.2018 / 13:27