es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AttributeError: el módulo ‘Foundation’ no tiene el atributo ‘NSString’, error con pyperclip

Pregunta – ¿Cómo puedo arreglar mi código para evitar este error? Me gustaría que output se coloque en mi portapapeles (estoy en una Mac).

Lo que he intentado – ¡Imprimir output en la consola funciona genial! He intentado desinstalar y reinstalar a través de pip pyperclip.

Lo que noto – mi código no llama a ‘NSString’ así que no tengo ni idea de dónde me he equivocado. ‘object’ es la .

¿Dónde puedo encontrar documentación útil sobre cómo resolver este tipo de problemas que podrían surgir en el futuro?

#!/usr/bin/env python3
# encoding: utf-8

import pyperclip

output = f"""" 

A continuación están los títulos y un resumen/significado/stinger de los zettel 
que he creado y sus ideas a las que estoy enfrentando.

"""

# print(output)
# print(type(output))
pyperclip.copy(output)

Salida

(base) ➜ ~ python wiwov1.py
Traceback (most recent call last):
File "/Users/will/wiwov1.py", line 79, in <module>
pyperclip.copy(output)
File "/usr/local/lib/python3.9/site-packages/pyperclip/__init__.py", line 659, in lazy_load_stub_copy
return copy(text)
File "/usr/local/lib/python3.9/site-packages/pyperclip/__init__.py", line 136, in copy_osx_pyobjc
newStr = Foundation.NSString.stringWithString_(text).nsstring()
AttributeError: module 'Foundation' has no attribute 'NSString'

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el error y copiar output al portapapeles en Mac, puedes intentar los siguientes pasos:

    1. Asegúrate de haber instalado pyobjc-core y el módulo pyobjc a través de pip, los cuales son requeridos para que pyperclip funcione en macOS.
    2. Importa el módulo Foundation al principio de tu script utilizando import Foundation.
    3. Cambia la línea pyperclip.copy(output) por pbcopy = subprocess.Popen(['pbcopy', 'w'], stdin=subprocess.PIPE) pbcopy.stdin.write(output.encode('utf-8')) pbcopy.stdin.close().

    Estos pasos deberían solucionar el error y permitirte copiar el output al portapapeles. Para obtener más información y solucionar problemas, puedes consultar la documentación de pyperclip y la documentación de macOS sobre cómo utilizar pbcopy.

Comments are closed.